我使用BeautifulSoup的API在Python中创建了一个webcrawler。当抓取某些站点时,webcrawler使用相同的头信息/用户代理。我注意到,当我在两台不同的计算机上运行同一确切脚本(一个在我的笔记本电脑上,另一个在服务器上)抓取给定站点时,它们产生不同的结果。通过“不同的结果”,我的意思是在服务器上运行的脚本不会爬到网站上的所有链接。例如,如果我想抓取Macys.com,我的笔记本电脑上的脚本会爬到每个部门(家庭,洗浴,女性,男性等),而在服务器上运行的脚本将错过洗浴部门。这让我非常困惑,因为他们都使用相同的头文件信息/用户代理相同的脚本来抓取相同的站点。我想不出任何其他的设置,可能会导致这在两台不同的机器上产生不同结果的Webcrawling脚本
下面是我在Python中定义我的用户代理和创建汤对象
user_agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7"
hdr={'User-Agent':user_agent}
response = urlopen(Request(current_url, headers=hdr))
html = response.read()
soup = BeautifulSoup(html, "lxml")
而你总是显式地指定(在这种情况下'lxml')解析器?你在本地和服务器上都安装了lxml吗?谢谢。 – alecxe 2014-11-23 01:05:19
您在两台机器上获得的html是否相同? – Isaac 2014-11-23 01:07:28
@Isaac,没有html确实是不同的 – lollerskates 2014-11-23 01:14:19