2
我試圖從網頁抓取數據,並且我想要的所有文本位於<p class="heading2">
和More...
之間。網絡抓取:我只獲得我想要的文本的1/10(使用BeautifulSoup)
它適用於第一批文本,但僅適用於該文本。
E.g.我得到:
Info about grant 1
,但該網站上有:
Info about grant 1
Info about grant 2
Info about grant 3
etc.
下面是我使用的代碼。我是BeautifulSoup的新手,所以我希望有人能幫助!
from bs4 import BeautifulSoup
import sheetsync
import urllib2, csv
url = urllib2.urlopen('http://www.asanet.org/funding/funding_and_grants.cfm').read()
def processData():
url = urllib2.urlopen('http://www.asanet.org/funding/funding_and_grants.cfm').read()
soup = BeautifulSoup(url)
metaData = soup.find_all("div", {"id":"memberscontent"})
authors = []
for html in metaData:
text = BeautifulSoup(str(html).strip()).encode("utf-8").replace("Deadline", "DEADLINE").replace('\s+',' ').replace('\n+',' ').replace('\s+',' ')
authors.append(text.split('<p class="heading2">')[1].split('More...')[0].strip()) # get Pos
txt = 'grants.txt'
with open(txt, 'ab') as out:
out.writelines(authors)
processData()
由於這似乎工作很好,但贈款頭銜不見了?標題2後的第一個文本! – Isak 2014-11-21 19:44:09
@ user3343907確定,更新了答案。 – alecxe 2014-11-21 19:45:19
太棒了,這是非常有用的,我可以從中學到很多東西。謝謝! – Isak 2014-11-21 19:49:50