在第一段代码中,我可以使用BS获取感兴趣的表格中的所有信息:
from urllib import urlopen
from bs4 import BeautifulSoup
html = urlopen("http://www.pythonscraping.com/pages/page3.html")
soup = BeautifulSoup(html)
for i in soup.find("table",{"id":"giftList"}).children:
print child
打印产品列表。
我想打印tournamentTable
here中的行(所需信息位于class=deactivate
,class=odd deactivate
,日期位于class=center nob-border
):
from urllib import urlopen
from bs4 import BeautifulSoup
html = urlopen("http://www.oddsportal.com/hockey/russia/khl/results/#/page/2.html")
soup = BeautifulSoup(html)
#for i in soup.find("table",{"id":"tournamentTable"}).children:
# print i
for i in soup.find("table",{"class":"table-main"}).children:
print i
但是那会在页面上打印其他表格。当我尝试使用{"id":"tournamentTable"}
指定感兴趣的表时,它会返回Nonetype
。
我错过了什么,我无法访问所需的表格&内的信息?
答案 0 :(得分:3)
当urllib.urlopen
返回网页内容时,它会从关闭JavaScript 的网址返回HTML 。在您的情况下,这意味着当urllib
加载相关网址时,id="tournamentTable"
的表格实际上从未加载。
您可以通过浏览器中的关闭JavaScript 并加载网址来观察此行为。
要抓取包含JavaScript呈现内容的网页,您可能需要考虑使用浏览器自动化程序包,例如 Selenium 。如果你经常刮,你可能还想下载一个JavaScript切换器'插件,允许您轻松地打开和关闭JavaScript。