有没有办法用Python抓取亚马逊产品列表页面?
我正在尝试抓取一些产品列表页面,这些页面上显示了特定产品的供应商和价格。但是,urllib.urlopen这个工具不太好用——在亚马逊的其他页面上都能正常工作,但我在想是不是亚马逊的防爬虫机制阻止了我在产品列表页面上抓取数据。有没有人能确认一下这个情况?我用Chrome浏览器还是能查看页面源代码...
这是我想抓取的一个产品列表页面的例子:http://www.amazon.com/gp/offer-listing/B007E84H96/ref=dp_olp_new?ie=UTF8&condition=new
2 个回答
你听说过BeautifulSoup吗?这个工具可能对你有帮助...
http://www.crummy.com/software/BeautifulSoup/
更多信息请查看:BeautifulSoup抓取可见网页文本
在那个网址上尝试使用 curl -I
命令时,返回了 MethodNotAllowed
的错误信息:
$ curl -I 'http://www.amazon.com/gp/offer-listing/B007E84H96/ref=dp_olp_new?ie=UTF8&condition=new'
HTTP/1.1 405 MethodNotAllowed
Date: Wed, 13 Feb 2013 16:41:08 GMT
Server: Server
x-amz-id-1: 1WKZG9N0SE87E3KFG6YV
allow: POST, GET
x-amz-id-2: Apluv2QBzzrmXlRWjlClRGsQQ1TbwsxObe2hxfdrGhO/OQziI/aIT3vkVjCPn+qz
Vary: Accept-Encoding,User-Agent
Content-Type: text/html; charset=ISO-8859-1
而且,即使加上 User-Agent
字符串和 -A
选项,返回的结果也没有改变。
你可以试着用不同的 HTTP 头信息,看看能不能找到一个能通过的。不过很明显,亚马逊不希望你从他们的产品页面抓取价格信息。稍微搜索一下就能找到这个页面:
http://www.distil.it/amazon-cracks-down-on-price-scraping/#.URvBFo4ry0s
亚马逊在六月开始严格执行一项长期以来的政策,禁止屏幕抓取工具直接从其市场获取商品信息。这项政策是为了打击那些为商家提供价格调整服务的工具,相关的第三方开发者表示。
另外,亚马逊还有一个供其合作伙伴使用的 API——在右侧的“相关”问题链接中,有一些关于如何用 Python 使用这个 API 的相关问题。