python3 scrapy爬取微信公众号及历史信息V1.0

2023-11-11

妹子图.png

环境:

python3 scrapy

目的

写这篇文章主要是做一下纪念,毕竟是搞了快两天的东西了,今天加大了量,使用scrapy爬取100多个微信公众号,然后出现IP被封的情况下,当然了,这种情况并不是没有办法解决,只需要在scrapy中进行设置一下就可以了,主要是在本地进行调试,然后IP代理池那一块暂时找不到好的质量高的IP,只是爬取了各大网站的免费IP,并没有很好的解决效果,这个版本只要在IP中稍微进行下设置调整,可以不愧为一个很好的爬取微信公众号历史消息的一个小案例。

爬取步骤

  1. 找到公众号
    image.png

  2. 获取历史消息
    image.png

  3. 获取详情页内容
    image.png

还有第4步:

将详情页内容解析出来,图片,文字都单独拎出来,现在暂时不做处理,因为这一块有些麻烦的。逻辑整体就是这样。

python代码

这里是spider的代码,其他的就不用贴出来了:

spiders/WeChatSogou.py

# -*- coding: utf-8 -*-
# @Time    : 2018/2/25 14:24
# @Author  : 蛇崽
# @Email   : 643435675@QQ.com
# @File    : WeChatSogou.py(微信公众号爬虫:不包含浏览量跟评论)
import scrapy
import re
import time
import json
import requests
from fake_useragent import UserAgent
from scrapy import Request
from scrapy_redis.spiders import RedisSpider
from News_scrapy.items import NewsItem
from News_scrapy.constants.WeChatSource import WXSource

class WeChatSogouSpider(scrapy.Spider):
    name = "WeChat"
    allowed_domains = ["weixin.sogou.com",'mp.weixin.qq.com']
    start_urls = ['http://weixin.sogou.com/']

    def parse(self, response):

        wx_source = WXSource.get_dict()
        for v_wx_source in wx_source:
            print('wx_source ===',v_wx_source)
            try:
                type = v_wx_source.split('-')[0]
                channel = v_wx_source.split('-')[1]
                print("正在抓取:", type, channel)
                v_main_url = 'http://weixin.sogou.com/weixin?type=1&s_from=input&query={}'.format(channel)
                print('v_main_url',v_main_url)
                yield scrapy.Request(url=str(v_main_url),callback=self.parse_main_link,meta={'type':type})
            except:
                continue
                print('wx_source error ===', v_wx_source)


    def parse_main_link(self,response):
        print('parse_main_link ====  ',response.body)
        target_url = response.xpath("//*['txt-box']/p[@class='tit']/a/@href").extract_first()
        print('===== start =====')
        print('target_url',target_url)
        print('==== end =====')
        if target_url:
            yield scrapy.Request(url=target_url,callback=self.parse_list_gzhao)


    def parse_list_gzhao(self,response):
        print('resonse:  ',response)
        req_text = response.text

        reg_content_url = r'"content_url":"(.*?)",'
        m_infos = re.findall(reg_content_url, req_text, re.S)
        print(len(m_infos))
        for v_info in m_infos:
            v_info = 'https://mp.weixin.qq.com' + re.sub('&', '&', v_info)
            print(v_info)
            yield scrapy.Request(url=v_info,callback=self.parse_detail)

    def parse_detail(self, response):
        print('parse_detail ===== ',response.text)

注意事项:
1 allowed_domains = ["weixin.sogou.com",'mp.weixin.qq.com'] 

2  reg_content_url = r'"content_url":"(.*?)",'
 这里通过正则方式获取每个详情页链接的url,因为原文用的js动态加载的,

下面这是注意事项2的截图:

image.png

很蛋疼吧,哈哈,哎。

放上自己小小的学习交流群吧
[Python自学交流群(702689263)](https://jq.qq.com/?_wv=1027&k=5b7RSfo
)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python3 scrapy爬取微信公众号及历史信息V1.0 的相关文章

随机推荐

  • maven 报错 Failed to execute goal on project ...: Could not resolve dependencies for project ...

    网上看了很多博客 都是说在根工程那里clean install一下就可以了 根本原因还是要看Could not resolve dependencies for project 我这边是common工程打包的时候打成了war包 其他工程都是
  • 最全IO流解析——IO流的骚操作

    Java中是通过流的方式对数据进行操作 用于操作流的类都在IO包中 IO流用来处理设备之间的数据传输 IO流按照流向分为输入流和输出流 按照操作的数据分为字节流和字符流 字节流可以操作任何数据 因为在计算机中任何数据都是以字节的形式存储的
  • Centos7的iso everything与DVD以及Live的区别

    DVD ISO 可以用安装程序安装的所有安装包 推荐镜像 Netinstall iso 从网络安装或者救援系统 Everything iso 包含centos7的一套完整的软件包 可以用来安装系统或者本地镜像 GnomeLive iso G
  • Mac下github的基本使用(有详细过程)

    一 github准备 1 注册github账号 https github com 按照提示进行注册 2 查看git版本 由于macOS默认安装了git 在终端输入 git v 3 设置username和email username随便输入一
  • 如何防止uniswap和pancakeswap夹子机器人

    被机器人夹是通俗说法 实际就是 front running 抢先提前交易 具体就是机器人在链上嗅探到你有买入行为的时候 他立刻买 gas给的比你高 快你一步确认 这样你成交价就高了 因为交易所有滑点 所以你依旧会以高一点的价格成交并且再将价
  • 区块链简单实现之p2p网络多节点同步

    区块链简单实现之p2p网络多节点同步 将区块保存为json文件 节点 不确定性 区块里保存节点信息 并未向所有节点广播 简单模拟 广播的代码 实现效果 完整的代码 承接上文 区块链的简单实现 我们已经实现了一个简单的区块链数据结构 现状 区
  • wasm + ffmpeg实现前端截取视频帧功能

    有没有那么一种可能 在前端页面处理音视频 例如用户选择一个视频 然后支持他设置视频的任意一帧作为封面 就不用把整一个视频上传到后端处理了 经过笔者的一番摸索 基本实现了这个功能 一个完整的demo ffmpeg wasm截取视频帧功能 支持
  • paddle-pytorch API对应表

    PyTorch API名称 对应Paddle API torch set default dtype paddle set default dtype torch get default dtype paddle get default d
  • linux下mysql-connector-c++连接远程服务器失败

    最近在将windows项目移植到linux下 碰到诸多问题 先谈mysql connector c 连接远程服务器失败问题 在windows下 sql Driver driver sql mysql get driver instance
  • 因果推理相关的图神经网络研究

    本文介绍两篇因果推理相关的图神经网络研究工作 一 OOD推荐系统下的因果表征学习 本文介绍了什么是推荐系统中的Out of Distribution OOD 问题 并从因果的角度提出了一种解决OOD问题的表示学习方式 文章链接 https
  • 关于xinput1_3.dll丢失的详细解决方法

    xinput1 3 dll是电脑文件中的dll文件 动态链接库文件 如果计算机中丢失了某个dll文件 可能会导致某些软件和游戏等程序无法正常启动运行 并且导致电脑系统弹窗报错 在我们打开软件或者游戏的时候 电脑提示xinput1 3 dll
  • Windows10下安装Linux子系统

    Windows10下安装Linux子系统 版本说明 版本 作者 日期 备注 0 1 ZY 2019 7 9 初稿 目录 文章目录 Windows10下安装Linux子系统 版本说明 目录 一 初衷 二 资料收集 三 官方安装说明 1 准备
  • 5.0结构型模式—概述

    结构型模式描述如何将类或对象按某种布局组成更大的结构 它分为类结构型模式和对象结构型模式 前者采用继承机制来组织接口和类 后者釆用组合或聚合来组合对象 由于组合关系或聚合关系比继承关系耦合度低 满足 合成复用原则 所以对象结构型模式比类结构
  • 国庆假期将至,拓世AI智能规划行程,让您轻松游遍全球热门景点!

    卡夫卡曾说 人不是活几年 几月 几天 几小时 而只活几个瞬间 亲赴一场与美景的邂逅 便是去找寻人生里的瞬间之美 转眼已是九月 正是人间好时节 挥别工作和生活的烦闷 奔向辽阔的天地中 即将到来的国庆长假 你需要来一场说走就走的旅行 将所有烦恼
  • 动态数据源配置druid+mybatis

    本方案不限数据库数量完全动态配置 支持不同的数据库部署在不同的服务器上 mybatis plus没测试 下个版本用oracle配的时候尝试plus 一 这次我们使用Mysql 本地现在有两个个数据库用于测试 如图 二 下一步我们看一下Dru
  • LintCode入门题目

    37 反转一个3位整数 反转一个只有3位数的整数 样例 样例 1 输入 number 123 输出 321 样例 2 输入 number 900 输出 9 注意事项 你可以假设输入一定是一个只有三位数的整数 这个整数大于等于100 小于10
  • 表空间的操作

    1 创建表空间 create tablespace tablespace name datafile filepath size filesize autoextend on next autosize maxsize filemaxsiz
  • rule34服务器不稳定,rule34网站

    rule34网站 内容精选 换一换 网站后台数据录入完成后 您需要为您的网站设置便于客户浏览和操作的前台显示界面 本章节主要通过已安装的网站模板指导您完成PC版 手机版网页的制作 以及网站数据的备份 已完成网站后台的设置 并且成功绑定域名
  • 用PyCharm打开已有代码

    一 代码的打开 1 在当前环境 打开新的项目 2 点open 打开文件存放的位置 3 trust Project 4 this window or new window 一般选this window 5 解决代码中的问题 1 一定要解决 2
  • python3 scrapy爬取微信公众号及历史信息V1.0

    环境 python3 scrapy 目的 写这篇文章主要是做一下纪念 毕竟是搞了快两天的东西了 今天加大了量 使用scrapy爬取100多个微信公众号 然后出现IP被封的情况下 当然了 这种情况并不是没有办法解决 只需要在scrapy中进行