author:Voccoo
time:2019-4-1

"""
1.本demo只是为了爬取指定公众号或指定关键字下公众号,限定时间内所发送的文章。若要获取公众号信息,一并存取,请根据第一条gzhurl做以修改,或者从文章中直接获取2.本demo只是匆忙间完成的,还有许多细节并不够完美。比如对返回值为空的判断等。若要使用请根据自己的需求加以修改3.本次代理使用了redis来存储,这是作者自己的习惯存储方式。若要使用,请自行修改方法redis_proxy().4.‘用代理,就上芝麻IP!’5.本demo只获取到文章的名称,更多信息请自行修改获取。
"""from fake_useragent import UserAgent
import requests, time
from scrapy import Selector
import random
import redis, json
from urllib.parse import quote# redis为ip池
# 从redis中获取ip
#
def redis_proxy():redis_conn = redis.StrictRedis(host='localhost',password='Cs123456.',port=6379,db=1)redis_ip = redis_conn.blpop('ips')ip = json.loads(redis_ip[1].decode('UTF-8'))proxy = {'https': 'https://{}'.format(ip['ip'])}return proxy# 获取html
def get_html_act(url, referer):ua = UserAgent()while True:proxies = redis_proxy()try:headers = {'User-Agent': ua.random,'Upgrade-Insecure-Requests': '1',}session = requests.session()session.get('https://mp.weixin.qq.com/',headers=headers,proxies=proxies,timeout=3)html = requests.get(url,headers=headers,proxies=proxies,# allow_redirects=False,timeout=3)if html.status_code == 200:# print(html.text)return Selector(text=html.text)else:print('---状态码---{}被封了---!'.format(proxies['https']))except Exception as e:print('-----超时抛错----')# 获取html
def get_html(url, referer):# print(url)ua = UserAgent()while True:proxies = redis_proxy()try:headers = {"Host": "weixin.sogou.com","Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",'User-Agent': ua.random,"ContentType": "text/xml;charset=utf-8",'Referer': referer,'Upgrade-Insecure-Requests': '1',}session = requests.session()html = session.get(url,headers=headers,proxies=proxies,allow_redirects=False,timeout=3)if html.status_code == 200:return Selector(text=html.text)else:print('---状态码---{}被封了---!'.format(proxies['https']))except Exception as e:print('-----超时抛错----')def run(gzh, start_time, endtime):""":param gzh::param start_time::param endtime::return:ps:搜索公众号的url,为了获取wxid,搜索关键可以为关键字也可为公众号若使用关键字搜索公众号的wxid,本demo只获取第一页的,请自行翻页获取"""gzh_url = 'https://weixin.sogou.com/weixin?type=1&s_from=input&query={}&ie=utf8&_sug_=n&_sug_type_='.format(quote(gzh))gzh_html = get_html(gzh_url, 'https://weixin.sogou.com/')wxid_list = gzh_html.css('ul.news-list2 li::attr(d)').extract()for wxid in wxid_list:page_ = Truepage_count = 1url = 'https://weixin.sogou.com/weixin?type=2&ie=utf8&query={}&tsn=5&ft={}&et={}&interation=&wxid={}&usip={}&page={}'.format(quote(gzh), start_time, endtime, wxid, quote(gzh), page_count)referer = 'https://weixin.sogou.com/weixin?type=2&s_from=input&query={}&ie=utf8&_sug_=n&_sug_type_='.format(quote(gzh))while page_:response = get_html(url, referer)article_urls = response.css('div.news-box ul.news-list li div.txt-box h3 a::attr(data-share)').extract()if len(article_urls) == 10:print('--翻页--进入第{}页--'.format(page_count+1))url = url.replace('&page={}'.format(page_count),'&page={}'.format(page_count+1))page_count += 1else:page_ = Falsefor al in article_urls:# print(al)article_html = get_html_act(al, '')article_name = article_html.css('#activity-name::text').extract_first()if article_name:# 输出当前页面链接文章名称print(article_name.strip())else:print(al)if __name__ == '__main__':# 开始时间start_time = '2019-03-01'# 结束时间endtime = '2019-04-01'# 公众号,也可以为公众号关键字gzh = '痴海'run(gzh, start_time, endtime)

搜狗微信爬虫获取文章信息相关推荐

  1. python爬虫:搜狗微信公众号文章信息的采集(https://weixin.sogou.com/),保存csv文件

    import requests from requests.exceptions import RequestException from lxml import etree import csv i ...

  2. 微信公众号文章信息(阅读量、在看、点赞数)获取

      实现这一个功能主要用到了selenium.mitmproxy和wechatarticles,利用selenium可以实现脚本模拟浏览器访问,mitmproxy配合wechatarticles获取文 ...

  3. 如何用python爬取公众号文章搜狗微信搜索_python如何爬取搜狗微信公众号文章永久链接的思路解析...

    这篇文章主要介绍了python如何爬取搜狗微信公众号文章永久链接的思路解析 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧. 本文主要讲解思路,代码部分请自行解决搜狗微信 ...

  4. php 获取企业号用户,微信企业号 获取用户信息(示例代码)

    业务操作最基础的一个功能是获取访客的身份,传统的获取方式是提供一个登录页面用以访客登录. 在微信企业号中,用户在微信中访问页面时,可以根据相关API获取此用户的微信账号信息,以此来匹配业务服务器存储的 ...

  5. 如何用python爬取公众号文章搜狗微信搜索_python抓取搜狗微信公众号文章

    初学python,抓取搜狗微信公众号文章存入mysql mysql表: 代码: import requests import json import re import pymysql # 创建连接 ...

  6. python抓取微信_python抓取搜狗微信公众号文章

    初学python,抓取搜狗微信公众号文章存入mysql mysql表: 代码: import requests import json import re import pymysql # 创建连接 ...

  7. python抓取搜狗微信公众号文章

    初学python,抓取搜狗微信公众号文章存入mysql mysql表: 代码: import requests import json import re import pymysql# 创建连接 c ...

  8. python wechatsougou_python抓取搜狗微信公众号文章

    初学python,抓取搜狗微信公众号文章存入mysql mysql表: 代码: import requests import json import re import pymysql # 创建连接 ...

  9. Python爬虫获取文章的标题及你的博客的阅读量,评论量。所有数据写入本地记事本。最后输出你的总阅读量!

    Python爬虫获取文章的标题及你的博客的阅读量,评论量.所有数据写入本地记事本.最后输出你的总阅读量!还可以进行筛选输出!比如阅读量大于1000,之类的! 完整代码在最后.依据阅读数量进行降序输出! ...

最新文章

  1. 数据结构源码笔记(C语言):可变长度字符串的快速排序
  2. NTU 课程: MAS714(3) DFS BFS(搜索算法)
  3. 揭秘Kaggle神器xgboost
  4. 【机器学习入门笔记4:OpenCV图片的写入和不同图片质量保存】20190203
  5. 【排序】几种简单的排序(冒泡、选择、插入)(一)
  6. 作者:陈昕(1982-),女,博士,中国科学院计算机网络信息中心研究员
  7. MySQL5添加外键约束错误 (Error Code : 1005)
  8. apache代理weblogic集群办法
  9. setInterval和setTImeout中的this指向问题
  10. 在Android浏览器下字体偏上的问题
  11. 高级UI-滤镜和颜色通道
  12. BuBu笔记——Mybatis深入(秃头BUBu的超详细备注,一定要看哦)
  13. 利用机器学习进行恶意代码分类
  14. switch日版有中文吗_Switch中文系统终于到来!近日将推送更新,美版日版港版均支持...
  15. Xms、Xmx、MaxMetaspaceSize含义
  16. 【配置Hifive1-revB】设备管理器中不识别端口,Can not connect to J-Link via USB的解决办法
  17. 如何续费iOS开发者账号 - 详细步骤
  18. IntellIJ IDEA导入项目后无法运行方法的解决方法!
  19. 用Lifekeeper实现DB2主备式群集
  20. P4VASP的安装 使用P4VASP画DOS(态密度)图

热门文章

  1. 【学习】笔记本电脑重新安装系统win10
  2. SecureCRT9.0.1、SecureFX9.0.1,windows与mac版本下载
  3. 伦敦 quant_伦敦统一用户组(LUUG)见面v1.0
  4. mysql 基础语法3
  5. qt在表格中如何画线_Qt如何在表格中显示和编辑数据
  6. PHP匿名在线聊天室系统源码
  7. 用Matlab生成Ornstein-Uhlenbeck过程
  8. java 微信请求超时_java – SQL服务器“超出锁定请求超时时间”..再次
  9. SSL-ZYC 2405 巧克力
  10. 福利 | 区块链寒冬的“另类”火锅吃法