我使用BeautifulSoup解析来自this page的一堆链接,但它并没有提取我想要的所有链接。为了弄清楚原因,我将html下载到" web_page.html"然后跑了
soup = BeautifulSoup(open("web_page.html"))
print soup.get_text()
我注意到它没有打印整个网页。它以布拉克利结束。我查看了html代码,看看Brackley'是否发生了一些奇怪的事情。但我找不到任何东西。此外,如果我移动另一个链接到布拉克利的地方,它将打印出而不是布拉克利。好像它只会读取一定大小的html文件?
答案 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 a
是CSS Selector
。
答案 1 :(得分:2)
尝试使用不同的解析器。您没有指定一个,因此您可能正在使用默认的html.parser
。尝试使用lxml
或html5lib
。
了解更多信息:http://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-a-parser