我正在学习制作网络抓取工具,并希望抓住TripAdvisor的个人项目,使用urllib2抓取html.
但是,我遇到了一个问题,使用下面的代码,我回来的html是不正确的,因为页面似乎需要一秒钟重定向(你可以通过访问网址验证这一点) – 而是我得到的代码从最初短暂出现的页面.
是否有一些行为或参数要设置以确保页面在获取网站内容之前已完全加载/重定向?
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()
解决方法:
有趣的问题不是重定向是该页面使用javascript修改内容,但urllib2没有JS引擎它只是GETS数据,如果你在浏览器上禁用了javascript,你会注意到它加载的内容与urllib2基本相同回报
import urllib2
from BeautifulSoup 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)
open('test.html', 'w').