我正在构建一个Web scraper,需要获取页面上实际显示的html页面源代码。但是,我只获得了一个有限的html源代码,其中不包含所需的信息。我认为我要么在javascript加载之前看到它,否则我可能没有得到完整的信息,因为我没有正确的身份验证?我的结果与Chrome中的“查看源”相同,而我想要的是Chrome的“检查元素”所显示的内容。在输入航班信息和搜索后,我的测试是cimber.dk。
我在python中编码并尝试了urllib2库。然后我听说Selenium对此很好,所以我也试过了。但是,这也给我带来了相同的有限页面来源。
这是我在使用Firebug查看参数后尝试使用urllib2的内容。 (我在打开cimber.dk之后删除了所有的cookie,所以我开始使用'clean slate')
url = 'https://www.cimber.dk/booking/'
values = {'ARRANGE_BY' : 'D',...} #one for each value
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())
#Using HTTPRedirectHandler instead of HTTPCookieProcessor gives the same.
urllib2.install_opener(opener)
request = urllib2.Request(url)
opener.addheaders = [('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0) Gecko/20100101 Firefox/4.0')]
request.add_header(....) # one for each header, also the cookie one
p = urllib.urlencode(values)
data = opener.open(request, p).read()
# data is now the limited source, like Chrome View Source
#I tried to add the following in some vain attempt to do a redirect.
#The result is always "HTTP Error 400: Bad request"
f = opener.open('https://wftc2.e-travel.com/plnext/cimber/Override.action')
data = f.read()
f.close()
答案 0 :(得分:2)
这样的大多数图书馆都不支持javascript。
如果你想要javascript,你需要自动化现有的浏览器或浏览器引擎,或者获得一个非常单一的强大的库,它本质上是一个高级的网络爬虫。