2017-04-21 70 views
0

我想寫一個蜘蛛抓取一個html。我使用requestsbeautifulsoup,但我發現美麗的臉不能分析整個頁面。相反,Beautifulsoup只是解析它的一半。 這裏是我的代碼:Beaultifusoup無法解析所有的html

import requests 
from bs4 import BeautifulSoup as bs 
urls = ['http://www.bishefuwu.com/developer/transmit','http://www.bishefuwu.com/developer/transmit/index/p/2.html'] 
html = requests.get(urls[0]).content 
soup = bs(html,'lxml') 
table = soup.find('tbody') 
trs = table.find_all('tr') 
for tr in trs: 
    r = tr.find_all('td')[:3] 
    for i in map(lambda x:x.get_text(),r): 
     print i 

,這是the origin page,裏面有行「13107」, 但我的蜘蛛只是有它的一半,我排停在「13192」。 爲了測試,我手動保存requests所要求的原始HTML,我發現一切都很好。這個錯誤在Beautifulsoup上。 我該如何解決它? 謝謝

回答

1

不,BeautifulSoup沒有什麼錯在這裏。您正在解析http://www.bishefuwu.com/developer/transmit網址下的單個網頁 - 它不包含編號爲13107的行 - 它位於第二頁。

遍歷列表中的所有網址:

with requests.Session() as session: 
    for url in urls: 
     html = session.get(url).content 

     soup = bs(html, 'lxml') 

     for tr in soup.select("tbody tr"): 
      r = tr.find_all('td')[:3] 
      for i in map(lambda x: x.get_text(), r): 
       print(i) 

需要注意的是,你也可以認爲不硬編碼的URL列表事先和處理分頁以更加時尚動感的解析上的分頁塊頁面並提取可用的頁碼。

+0

非常感謝! – ucag