前言:

之前收藏了一个叫微信公众号的文章爬取,里面用到的模块不错。然而

偏偏报错= =。果断自己写了一个

正文:

第一步爬取搜狗微信搜到的公众号:

http://weixin.sogou.com/weixin?type=1&query=FreeBuf&ie=utf8&s_from=input&_sug_=n&_sug_type_=1&w=01015002&oq=&ri=11&sourceid=sugg&sut=0&sst0=1529673558816&lkt=0%2C0%2C0&p=40040108

将FreeBuf改为自己要搜的公众号

查看网页源代码:

正则匹配:

第一个正则:匹配指定的URL 正则: src=.*&timestamp=.*&ver=.*&signature=.*

蓝色标出来的是我们要的,注意多请求URL可以注意到URL,signature也就是签名是随机变化的。所以可得到正则:.*== ,取第一个,然后打开此链接爬取文章链接即可(更多细节会在代码看到)

代码:

import requests
import re
import threading
user=input('请输入要搜索的微信公众号或微信号:')
headers={'user-agent':'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.3 (Change: 287 c9dfb30)'}
url='http://weixin.sogou.com/weixin?type=1&s_from=input&query={}&ie=utf8&_sug_=y&_sug_type_=&w=01015002&oq=jike&ri=0&sourceid=sugg&stj=0%3B0%3B0%3B0&stj2=0&stj0=0&stj1=0&hp=36&hp1=&sut=4432&sst0=1529305369937&lkt=5%2C1529305367635%2C1529305369835'.format(user.rstrip()) def zhuaqu():
r = requests.get(url=url, headers=headers)
rsw = re.findall('src=.*&timestamp=.*&ver=.*&signature=.*', str(r.text))
if '验证码' in str(r.text):
print('[-]发现验证码请访问URL:{}后在重新运行此脚本'.format(r.url))
exit()
else:
cis = re.findall('.*?==', str(rsw[0]))
qd = "".join(cis)
qd2 = "{}".format(qd)
qd3 = qd2.replace(';', '&')
urls = 'https://mp.weixin.qq.com/profile?'.strip() + qd3
uewq=requests.get(url=urls,headers=headers)
if '验证码' in str(uewq.text):
print('[-]发现验证码请访问URL:{}后在重新运行此脚本'.format(uewq.url))
exit()
else:
ldw = re.findall('src = ".*?" ; ', uewq.text)
ldw2=re.findall('timestamp = ".*?" ; ',uewq.text)
ldw3=re.findall('ver = ".*?" ; ',uewq.text)
ldw4=re.findall('signature = ".*?"',uewq.text)
ldws="".join(ldw)
ldw2s="".join(ldw2)
ldw3s="".join(ldw3)
ldw4s="".join(ldw4)
ldwsjihe=ldws+ldw2s+ldw3s+ldw4s
fk=ldwsjihe.split()
fkchuli="".join(fk)
gs=fkchuli.replace('"','')
hew=gs.replace(';','&')
wanc="http://mp.weixin.qq.com/profile?"+hew
xiau=requests.get(url=wanc,headers=headers)
houxu=re.findall('{.*?}',xiau.content.decode('utf-8'))
title=re.findall('"title":".*?"',str(houxu))
purl=re.findall('"content_url":".*?"',str(houxu))
for i in range(0,len(title)):
jc='{}:{}'.format(title[i],'https://mp.weixin.qq.com'+purl[i]).replace('"','')
jc2=jc.replace('content_url','')
jc3=jc2.replace(';','&')
print(jc3) t=threading.Thread(target=zhuaqu,args=())
t.start()

测试结果:

BGM:

python爬搜狗微信获取指定微信公众号的文章的更多相关文章

  1. Python3 itchat微信获取好友、公众号、群聊的基础信息

    Python3 itchat微信获取好友.公众号.群聊的基础信息 一.简介 安装 itchat pip install itchat 使用个人微信的过程当中主要有三种账号需要获取,分别为: 好友 公众 ...

  2. 50行Python代码,教你获取公众号全部文章

    > 本文首发自公众号:python3xxx 爬取公众号的方式常见的有两种 - 通过搜狗搜索去获取,缺点是只能获取最新的十条推送文章 - 通过微信公众号的素材管理,获取公众号文章.缺点是需要申请自 ...

  3. 微信小程序和公众号和H5之间相互跳转

    参考链接:https://www.imooc.com/article/22900 一.小程序和公众号 答案是:可以相互关联. 在微信公众号里可以添加小程序. 可关联已有的小程序或快速创建小程序.已关联 ...

  4. 微信小程序自运营器 微信小程序自动运营器(让你的微信小程序,公众号零运营成本,24小时全自动运营)

    自动发单,自动评价,自动评论,自动推广 微信小程序自运营器  微信小程序自动运营器(让你的微信小程序,公众号零运营成本,24小时全自动运营) 我们会根据你的微信公众号或微信小程序定制开发带有一定AI智 ...

  5. 微信开发笔记:公众号获取access_token

    微信开发中,access_token的获取是一种非常常见的功能,通过公众号的appid和appsecret来向微信公众平台请求一个临时通行凭证:access_token.公众平台上的绝大部分操作都会需 ...

  6. Chrome获取微信授权,调试公众号页面

    1.目的 你可能遇到过这种情况,在微信中打开公众号是这样的. 复制链接,在chrome中打开是这样的. 博主今天要解决的就是,如果在chrome中加载需要微信授权的页面,至于加载成功后要干嘛,测试?抓 ...

  7. 微信第三方平台开头篇--MVC代码(第三方获取ticket和公众号授权)

    微信公众号授权给开放平台 公众号授权给第三方平台的技术实现流程比较简单 这个步骤遗漏了开头获取第三方平台自己的accessToken 先说下流程 如何注册开放平台的第三方信息看截图 其他不说了,此文只 ...

  8. 微信跳转,网页跳转微信app跳转公众号关注页面[转载]

    [微信跳转链接]之跳转公众号关注页面如何做到在微信内部在这里插入代码片浏览器打开的webview页面中,跳转到微信公众号的关注页面呢!我们可以通过访问微信提供的URL协议(weixin://)来实现这 ...

  9. 用iframe嵌入了一个微信公众号平台文章的URL

    JS: $.ajaxPrefilter( function (options) { if (options.crossDomain && jQuery.support.cors) { ...

随机推荐

  1. 一次由webview报错引起的追根溯源

    最近客户端那边需要搞了个h5嵌入app,想想是移动端的webview,前端这边也比较忙.就没想太多,直接用了async/await处理api数据,于是就不怪测试就来搞事情了... 一.error: 1 ...

  2. 获取和设置HTML标签中的数据

  3. redhat7下mysql5.7.12重启电脑后起不来问题

    环境介绍: 64位reahat7 mysql5.7.12 初次安装后mysql运行是正常的,重启操作系统后检查mysql运行状态如下: [root@localhost ~]# systemctl st ...

  4. HDU 2276 矩阵快速幂

    Kiki & Little Kiki 2 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java ...

  5. JS object(对象)的学习汇总

    Object(对象)是在所有的编程语言中都十分重要的一个概念,对于事物我们可以把他们看作是一个对象,而每一个事物都有自己的表示的属性和对于某一信息作出的相应的操作.而这些东西就变成了事物的属性和方法. ...

  6. JavaScript学习总结(二十一)——使用JavaScript的数组实现数据结构中的队列与堆栈

    今天在项目中要使用JavaScript实现数据结构中的队列和堆栈,这里做一下总结. 一.队列和堆栈的简单介绍 1.1.队列的基本概念 队列:是一种支持先进先出(FIFO)的集合,即先被插入的数据,先被 ...

  7. 蓝桥杯练习系统历届试题 带分数 dfs

    问题描述 100 可以表示为带分数的形式:100 = 3 + 69258 / 714. 还可以表示为:100 = 82 + 3546 / 197. 注意特征:带分数中,数字1~9分别出现且只出现一次( ...

  8. vue 父组件传递数据给子组件

    父组件 <body> <div id="app"> <child v-bind:data = "test"></chi ...

  9. vue.js单个slot

    刚开始看这个slot的时候有点蒙,想了几分钟才明白过来,汗颜 <script> var mycompoent = Vue.extend({ template:"<div&g ...

  10. C++设计模式之桥接模式

    [DP]书上定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化.考虑装操作系统,有多种配置的计算机,同样也有多款操作系统.如何运用桥接模式呢?可以将操作系统和计算机分别抽象出来,让它们各自发展 ...