0
我有這樣的代碼:蟒蛇2.x的維基解析
import urllib
from bs4 import BeautifulSoup
base_url='https://en.wikipedia.org'
start_url='https://en.wikipedia.org/wiki/Computer_programming'
outfile_name='Computer_programming.csv'
no_of_links=10
fp=open(outfile_name, 'wb')
def get_links(link):
html = urllib.urlopen(link).read()
soup = BeautifulSoup(html, "lxml")
ret_list=soup.select('p a[href]')
count=0
ret=[]
for tag in ret_list:
link=tag['href']
if link[0]=='/' and ':' not in link and link[:5]=='/wiki' and '#' not in link:
ret.append(base_url+link)
count=count+1
if count==no_of_links:
return ret
l1=get_links(start_url)
for link in l1:
fp.write('%s;%s\n'%(start_url,link))
for link1 in l1:
l2=get_links(link1)
for link in l2:
fp.write('%s;%s\n'%(link1,link))
for link2 in l2:
l3=get_links(link2)
for link in l3:
fp.write('%s;%s\n'%(link2,link))
fp.close()
是節省節點的鄰居在csv文件。 但是當我嘗試運行它,我得到這個錯誤:
for link in l3:
TypeError: 'NoneType' object is not iterable
我得到當我試圖爲另一個維基百科的鏈接運行的代碼,就像https://en.wikipedia.org/wiki/Technology同樣的錯誤。 它工作的唯一頁面是:https://en.wikipedia.org/wiki/Computer_science。這是一個問題,因爲我需要收集更多網站上的數據,而不僅僅是計算機科學。
任何人都可以給我一個提示如何處理它?
非常感謝。
你應該調試你的程序行由行。似乎在函數get_links的某個時刻出現count!= no_of_links,所以函數返回None。 –
空鏈接應該被跳過,而不是讓程序停止,這就是問題 – Lila
如果頁面上的鏈接少於10個,該怎麼辦?嘗試在函數結束時返回ret。 –