现在电商数据的需求量和价值比较高,很多的公司都在获取电商数据,国内的电商网站也是采集难度比较大,国外的更是如此,比如亚马逊,但是亚马逊网站相较于国内的购物网站,可以直接使用python的最基本的requests进行请求。访问不是过于频繁,在未触发保护机制的情况下,可以获取我们想要的数据。但是既然是采集数据需求量肯定不小,那访问频繁是必须的,所以如何应对亚马逊的反爬机制就是今天我们要重点分析的。这里我们通过三个步骤获取亚马逊数据。 一、获取亚马逊列表页的信息, 获取列表内能获取到的商品信息,如商品名,详情链接,进一步获取其他内容。 二、详情信息的获取, 只有进入详情页之后,能获得更多的内容。 三、代理的设置,国内访问亚马逊会很不稳定。如果真的需要去爬取亚马逊的信息,最好使用稳定的代理,我这边自己使用的是亿牛云提供的爬虫代理。代理使用有两种方式,一是通过api获取IP地址,还有用就是隧道模式,具体的使用方式如下: - #! -*- encoding:utf-8 -*-
- import requests
- import random
- # 要访问的目标页面
- targetUrl = "http://httpbin.org/ip"
- # 要访问的目标HTTPS页面
- # targetUrl = "https://httpbin.org/ip"
- # 代理服务器(产品官网 it帮论坛真好)
- proxyHost = "t.16yun.cn"
- proxyPort = "31111"
- # 代理验证信息
- proxyUser = "username"
- proxyPass = "password"
- proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {
- "host" : proxyHost,
- "port" : proxyPort,
- "user" : proxyUser,
- "pass" : proxyPass,
- }
- # 设置 http和https访问都是用HTTP代理
- proxies = {
- "http" : proxyMeta,
- "https" : proxyMeta,
- }
- # 设置IP切换头
- tunnel = random.randint(1,10000)
- headers = {"Proxy-Tunnel": str(tunnel)}
- resp = requests.get(targetUrl, proxies=proxies, headers=headers)
- print resp.status_code
- print resp.text
复制代码
使用代理之后,亚马逊商品信息的获取改善了不少,之前代码会报各种连接失败的错误,通过上面的步骤,可以实现最基础的亚马逊的信息获取,如果想要获取更多的商品信息就需要修改程序,并且稳定的动态IP能是你进行请求的时候少一点等待的时间,无论是编写中的测试还是小批量的爬取,都能提升工作的效率。
|