Beaultifusoup无法解析所有的html

时间:2017-04-21 08:44:12

标签: python html beautifulsoup web-crawler html-parsing

我想写一个蜘蛛来抓取一个HTML。我使用requestsbeautifulsoup,但我发现beautifulsoup无法解析整个页面。相反,Beautifulsoup只解析了一半。 这是我的代码:

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 个答案:

答案 0 :(得分: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)

请注意,您还可以考虑事先不对硬盘列表进行硬编码,并以更动态的方式处理分页,解析页面上的分页块并提取可用的页码。