suger7 发表于 2021-5-24 16:22:36

Scrapy爬虫之美团

通过Scrapy,我们可以轻松地完成一个站点爬虫的编写。但如果抓取的站点量非常大,比如爬取各大媒体的新闻信息,多个Spider则可能包含很多重复代码。
如果我们将各个站点的Spider的公共部分保留下来,不同的部分提取出来作为单独的配置,如爬取规则、页面解析方式等抽离出来做成一个配置文件,那么我们在新增一个爬虫的时候,只需要实现这些网站的爬取规则和提取规则即可。
今天我们就通过Scrapy来爬取目前比较难搞定的美团。因为美团网的反爬措施,需要设置IP代理以及随机切换可用的User-Agent来进行大量数据的爬取。我们是因为购买亿牛云的爬虫代理,所以他们提供了很多的最新的ua库,这个赠送福利是目前所有代理商里面最好的一家。但是美团是超级难采集的,只有代理不行的,要是程序做的不好,应对爬虫策略做的不够完善没法采集的。
接下来我们分享下挂上代理采集美团的完整示例
#! -*- encoding:utf-8 -*-
    import requests
    import random
    # 要访问的目标页面
    targetUrl = "http://www.meituan.com"
    # 要访问的目标HTTPS页面
    # targetUrl = "https://www.meituan.com"
    # 代理服务器(产品官网 www.16yun.cn)
    proxyHost = "t.16yun.cn"
    proxyPort = "31111"
    # 代理验证信息
    proxyUser = "16YCUTUE"
    proxyPass = "458762"
    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
今天就先分享到这里,关于更多的攻克美团的方法大家可以来留言交流。

微.光 发表于 2021-9-29 12:06:05

有点意思,所以关键还是在于使用拥有大量Proxy-Tunnel值的代理,但是这样和UA好像没啥关系

cangshui 发表于 2022-6-11 14:26:02

谢谢楼主分享607059
页: [1]
查看完整版本: Scrapy爬虫之美团