美丽的汤不会'得到'完整的网页

时间:2014-11-13 16:11:14

标签: python html web-scraping beautifulsoup

我使用BeautifulSoup解析来自this page的一堆链接,但它并没有提取我想要的所有链接。为了弄清楚原因,我将html下载到" web_page.html"然后跑了

soup = BeautifulSoup(open("web_page.html"))
print soup.get_text()

我注意到它没有打印整个网页。它以布拉克利结束。我查看了html代码,看看Brackley'是否发生了一些奇怪的事情。但我找不到任何东西。此外,如果我移动另一个链接到布拉克利的地方,它将打印出而不是布拉克利。好像它只会读取一定大小的html文件?

2 个答案:

答案 0 :(得分:2)

不确定你是如何得到这个页面和链接的,这就是我所做的,并从#34;加拿大"开始获得所有链接。并以" Taloyoak,HAM"结束:

from bs4 import BeautifulSoup
import requests

url = 'http://www12.statcan.gc.ca/census-recensement/2006/dp-pd/tbt/Geo-index-eng.cfm?TABID=5&LANG=E&APATH=3&DETAIL=0&DIM=0&FL=A&FREE=0&GC=0&GID=0&GK=0&GRP=1&PID=99015&PRID=0&PTYPE=88971,97154&S=0&SHOWALL=0&SUB=0&Temporal=2006&THEME=70&VID=0&VNAMEE=&VNAMEF=&D1=0&D2=0&D3=0&D4=0&D5=0&D6=0'
response = requests.get(url)

soup = BeautifulSoup(response.content)
print [a.text for a in soup.select('div.span-8 ol li a')]

打印:

[
    u'Canada', 
    u'Newfoundland and Labrador / Terre-Neuve-et-Labrador',
    ...
    u'Gjoa Haven, HAM', 
    u'Taloyoak, HAM'
]

仅供参考,div.span-8 ol li aCSS Selector

答案 1 :(得分:2)

尝试使用不同的解析器。您没有指定一个,因此您可能正在使用默认的html.parser。尝试使用lxmlhtml5lib

了解更多信息:http://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-a-parser