0

次のコードがあります。それはすべてデータをスクレイピングします。しかし、私の懸念は、反復ごとにデータを 1 行に書き込むことです。

これが私のコードです

import bs4 as bs
import urllib2
import re

page = urllib2.urlopen("http://www.codissia.com/member/members-directory/?mode=paging&Keyword=&Type=&pg=1")
content = page.read()
soup = bs.BeautifulSoup(content)
eachbox = soup.find_all('div', {'class':re.compile(r'members_box[12]')})
for eachuniversity in eachbox:
    data =  [re.sub('\s+', '', text).strip().encode('utf8') for text in eachuniversity.find_all(text=True) if text.strip()]
    print(','.join(data))

アップデート

繰り返しのために、出力をこのように(1行で)したい

Name:,Mr.Srinivasan.N,Designation:,Proprietor,CODISSIA - Designation:,(Past President, CODISSIA),Name of the Industry:,Arian Soap Manufacturing Co,Specification:,LIFE,Date of Admission:,19.12.1969, "Parijaat" 26/1Shanker Mutt Road, Basavana Gudi,Phone:,2313861

しかし、私は次のようになっています

Name:,Mr.Srinivasan.N,Designation:,Proprietor,CODISSIA - Designation:,(Past President, CODISSIA),Name of the Industry:,Arian Soap Manufacturing Co,Specification:,LIFE,Date of Admission:,19.12.1969
"Parijaat" 26/1Shanker Mutt Road, Basavana Gudi,Phone:,2313861
4

1 に答える 1

1

eachboxは classmembers_box1またはのいずれかであるため、実際には両方を 1 行に表示したい場合に、members_box2繰り返し処理を行うと、すべてのボックスの内容が別の行に出力されます。eachboxこれを回避する 1 つの方法は次のようになります。

box1s = soup.find_all('div', class_='members_box1')
box2s = soup.find_all('div', class_='members_box2')
for box1, box2 in zip(box1s, box2s):
    data =  [re.sub('\s+', '', text).strip().encode('utf8') for text in box1.find_all(text=True) + box2.find_all(text=True) if text.strip()]
    print(','.join(data))
于 2013-11-14T17:38:29.390 に答える