我正在学习制作web scraper,并想为一个个人项目创建TripAdvisor,使用urllib2获取html。 但是,我遇到了一个问题,使用下面的代码,我返回的html不正确,因为页面似乎需要一秒钟来重定向(您可以通过访问url来验证这一点)-相反,我从最初短暂出现的页面获取代码。
在获取网站内容之前,是否需要设置一些行为或参数以确保页面已完全完成加载/重定向?
import urllib2
from bs4 import BeautifulSoup
bostonPage = urllib2.urlopen("http://www.tripadvisor.com/HACSearch?geo=34438#02,1342106684473,rad:S0,sponsors:ABEST_WESTERN,style:Szff_6")
soup = BeautifulSoup(bostonPage)
print soup.prettify()
编辑:答案是彻底的,但是,最终解决我问题的是: https://stackoverflow.com/a/3210737/1157283
在重新创建时,问题不是重定向,而是页面使用javascript修改内容,但是
urllib2
没有JS
引擎,它只是GETS
数据,如果在浏览器上禁用javascript,您会注意到它加载的内容与urllib2
返回的内容基本相同test.html
并在浏览器中禁用JS,这在firefox内容中是最简单的->;取消选中“启用javascript”,将生成相同的结果集。那么我们能做什么呢,首先我们应该检查一下网站是否提供了一个API,报废往往会让人皱眉 http://www.tripadvisor.com/help/what_type_of_tripadvisor_content_is_available
Travel/Hotel API's? 虽然有一些限制,但看起来他们可能会。
但是如果我们还需要用JS来擦掉它,那么我们可以使用
selenium
http://seleniumhq.org/它主要用于测试,但是它很简单,而且有相当好的文档。我还发现了这个Scraping websites with Javascript enabled?和这个http://grep.codeconsult.ch/2007/02/24/crowbar-scrape-javascript-generated-pages-via-gecko-and-rest/
希望能有所帮助。
作为旁注:
相关问题 更多 >
编程相关推荐