获取包含JavaScript结果和认证的HTML源代码

1 投票
1 回答
898 浏览
提问于 2025-04-16 17:02

我正在做一个网页抓取工具,想要获取网页的完整HTML源代码,也就是页面上实际显示的内容。但是,我得到的HTML源代码很有限,缺少我需要的信息。我觉得可能是因为我看到的内容是在JavaScript加载之前,或者是因为我没有正确的认证信息,所以无法获取完整的信息?我得到的结果和在Chrome浏览器中选择“查看源代码”是一样的,而我想要的是Chrome的“检查元素”功能显示的内容。我测试的网站是cimber.dk,在输入航班信息并搜索后。

我用Python编程,尝试过urllib2这个库。后来我听说Selenium在这方面效果不错,所以我也试了一下。但是,结果还是得到同样有限的页面源代码。

这是我在使用Firebug查看参数后,用urllib2尝试的代码。(在打开cimber.dk后,我删除了所有的cookies,所以我是在一个“干净的状态”下开始的)

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()

1 个回答

2

大多数这样的库都不支持JavaScript。

如果你想使用JavaScript,你需要要么自动化一个现有的浏览器或浏览器引擎,要么找一个非常庞大、功能强大的库,基本上就是一个高级的网络爬虫。

撰写回答