注意: IP精灵代理仅提供国内ip网络节点,不提供境外网络节点,不能用于任何非法用途或访问境外封闭网站,不能跨境联网,只能用于合法的国内网络加速。

您好,请登录 没有账号?

首页 > 新闻资讯 > 如何使用IP代理爬取微信公众号文章

如何使用IP代理爬取微信公众号文章

来源:IP代理精灵​ 作者:admin 时间:2019-04-19 13:56:33

使用搜狗搜索爬取微信文章时由于官方有反爬虫措施,不更换代理容易被封,所以使用更换代理的方法爬取微信文章,如何使用IP代理爬取微信公众号文章?下面具体为大家介绍一下。


一 目标


利用代理爬取微信公众号的文章,提取正文、发表日期、公众号等内容,爬取的来源是搜狗微信,链接是https://weixin.sogou.com/,然后把爬取结构保存到MySQL数据库。


二 准备好代理池


三 爬取分析


1 搜索NAB,可以搜索到最新的文章

如何使用IP代理爬取微信公众号文章

2 搜索的URL为:https://weixin.sogou.com/weixin?type=2&query=NBA&ie=utf8&s_from=input&_sug_=y&_sug_type_=&w=01019900&sut=1512&sst0=1549769076479&lkt=4%2C1549769074864%2C1549769076377,我们去掉无关的参数,仅搜索https://weixin.sogou.com/weixin?type=2&query=NBA


3 分页列表为

如何使用IP代理爬取微信公众号文章

没有账号登录,只能看到10页,如果登录,能看到更多的内容:

如何使用IP代理爬取微信公众号文章

4 搜狗的反爬能力


如果连续刷新,站点会弹出类似下面反爬虫验证页面,说明IP访问次数太高,IP被封禁。

如何使用IP代理爬取微信公众号文章

5 实现思路


修改代理池检测链接为搜狗微信站点


构造Redis爬取队列,用队列实现请求的存取


实现异常处理,失败的请求重新加入队列


实现翻译和提取文章列表,并把请求加入队列


实现微信文章的信息提取


将提取到的信息保存到Mysql


四 构造请求


继承Request,定义WeixinRequest


from weixin.config import *
from requests import Request


class WeixinRequest(Request):
    def __init__(self, url, callback, method='GET', headers=None, need_proxy=False, fail_time=0, timeout=TIMEOUT):
        Request.__init__(self, method, url, headers)
        # 回调函数
        self.callback = callback
        # 是否需要代理爬取
        self.need_proxy = need_proxy
        # 失败次数
        self.fail_time = fail_time
        # 超时时间
        self.timeout = timeout

五 实现请求队列


1 代码


from redis import StrictRedis
from weixin.config import *
from pickle import dumps, loads
from weixin.request import WeixinRequest


class RedisQueue():
    def __init__(self):
        """
        初始化StrictRedis
        """
        self.db = StrictRedis(host=REDIS_HOST, port=REDIS_PORT, password=REDIS_PASSWORD)

    def add(self, request):
        """
        向队列添加序列化后的Request
        :param request: 请求对象
        :param fail_time: 失败次数
        :return: 添加结果
        """
        if isinstance(request, WeixinRequest):
            return self.db.rpush(REDIS_KEY, dumps(request))
        return False

    def pop(self):
        """
        取出下一个Request并反序列化
        :return: Request or None
        """
        if self.db.llen(REDIS_KEY):
            return loads(self.db.lpop(REDIS_KEY))
        else:
            return False

    def clear(self):
        self.db.delete(REDIS_KEY)

    def empty(self):
        return self.db.llen(REDIS_KEY) == 0


if __name__ == '__main__':
    db = RedisQueue()
    start_url = 'http://www.baidu.com'
    weixin_request = WeixinRequest(url=start_url, callback='hello', need_proxy=True)
    db.add(weixin_request)
    request = db.pop()
    print(request)
    print(request.callback, request.need_proxy)

2 测试结果


E:\Python\Weixin\venv\Scripts\python.exe E:/Python/Weixin/weixin/db.py
<Request [GET]>
hello True


最新资讯

推荐阅读

  1. 10

    2019-04

    旅游行业怎么使用代理IP精准分析客户需求

    现阶段,因为生活质量的提高和思维方式的转变,准确的说还包括了出行等等一系列事物的变革,旅游行业发展的越来越好,但是现在一个大趋势是,大家比起跟团更喜欢自驾游,这其中其实包

  2. 31

    2019-05

    代理IP速度缓慢的原因是什么

    相信许多朋友都使用过换IP软件吧,无论是因为销售业务需求量还是个人需求,在使用换IP软件的操作过程中常会遇到某些令人烦闷至极的难题,例如代理IP连接不了,又如经厉了千难万险好不容

  3. 24

    2019-05

    独享ip代理与共享ip代理对比有什么优势

    对于爬虫来说,在听到ip代理的时候,听得最多的莫过于透明代理、匿名代理、高匿代理这几个词了,那么分别是什么意思呢?互相之间有什么样的区别呢?为什么说爬虫代理一定要使用高匿代

  4. 30

    2019-05

    什么是免费代理服务器?

    什么是免费代理服务器?在使用软件搜索代理服务器地址时,会在验证状态栏中出现类似“要密码”、“Free”等字样。如果你把“Free”的地址设置为代理服务器,那你就会发现访问网页时不会

  5. 28

    2019-04

    网站更换IP和空间会影响seo关键词的排名吗?

    做网络的通常都会讨论一个问题,网站更换服务器IP地址对排名有没有影响?简单的说,其实你只要是不频繁的更换,影响也不会很大的。那么对关键词的排名呢?那么还有一个问题,对关键词

  6. 06

    2019-03

    如何提高网站流量?

    网站访问量也成为网站流量,流量是一个网站建设的关键。流量是访问网站的访客数以及访客浏览的网页数量等指标。如果一个网站没有流量的话,是非常失败的,要怎么做推广,才能带来流量

在线客服
大客户VIP渠道
点击这里给我发消息
讨论QQ群
HTTP代理IP爬虫
客服电话
13318873961