【发布时间】:2014-11-22 23:05:12
【问题描述】:
我使用 BeautifulSoup 的 API 在 Python 中创建了一个网络爬虫。网络爬虫在爬取某些站点时使用相同的标头信息/用户代理。我注意到,当我在两台不同的机器上运行相同的脚本(一个在我的笔记本电脑上,另一个在服务器上)来爬取给定的站点时,它们会产生不同的结果。 “不同的结果”是指在服务器上运行的脚本不会爬到站点上的所有链接。
例如,如果我想爬取 Macys.com,我笔记本电脑上的脚本会爬到每个部门(家庭、床上用品、女士、男士等),而在服务器上运行的脚本会错过床上用品部门。这真的让我很困惑,因为他们都使用相同的脚本和相同的标头信息/用户代理来抓取同一个站点。我想不出任何其他可能导致这种情况的设置
这是我如何在 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?谢谢。 -
你在两台机器上得到的html是一样的吗?
-
@Isaac,不,html 确实不同
-
@alecxe,在比较过程中,我让两个脚本都使用默认的 html 解析器
标签: python web-scraping beautifulsoup html-parsing web-crawler