python爬取指定微信公众号文章
作者:max_wcsdn 发布时间:2021-03-29 02:34:39
标签:python,爬取,微信公众号
本文实例为大家分享了python爬取微信公众号文章的具体代码,供大家参考,具体内容如下
该方法是依赖于urllib2库来完成的,首先你需要安装好你的python环境,然后安装urllib2库
程序的起始方法(返回值是公众号文章列表):
def openUrl():
print("启动爬虫,打开搜狗搜索微信界面")
# 加载页面
url = 'http://weixin.sogou.com/weixin?type=1&s_from=input&query=要爬取的公众号名称'
htmlContentObj = urllib2.urlopen(url)
# 将页面转化为文本
html = htmlContentObj.read()
# 正则匹配
str = re.findall(r"http://mp.weixin.qq.com/profile.+==",html)
# 替换转义符得到可访问的链接地址
tempHref = re.sub(r"&","&",str[0])
return tempHref
根据获取到的文章列表的页的链接地址(注意是文章列表页面的得链接地址,不是文章的地址)将页面读取为文本
# 获取页面文本方法
def getHtmlStr(conurl):
# 相当于把页面转化为文本
response = urllib2.urlopen(conurl)
# 读取文本的字符串
htmlStr = response.read()
return htmlStr
对读取为文本的页面进行分析并利用正则匹配获得公众号里面文章的标题,链接地址等内容得json对象
# 文本转换为所需要的json对象
def htmlToJsonObj(htmlStr):
# 正则匹配并得到需要的json字符串
jsonObjstr = re.findall(r"{\"list\":\[.+\]\}", htmlStr)
# 字符串转json
jsonObj = json.loads(jsonObjstr[len(jsonObjstr)-1])
return jsonObj
然后从json对象中取出title,拼接url等(我这里只是获取了链接地址和标题),将两个内容分别存在两个数组,以json对象的方式返回出去(注意拼接url的时候要替换掉转义符(&))
# 从json对象中取出所需要的url
def jsonObjToArray(jsonObj):
hrefs = []
titles = []
# url中的&在html中是& ,故需要替换,下面为正则
patten = re.compile(r"&")
# 数组
arr = jsonObj["list"]
# 循环添加
for i in range(len(arr)):
# 每次替换字符串
fixHref = re.sub(patten,"&",arr[i]["app_msg_ext_info"]["content_url"])
# 添加到数组
titles.append(arr[i]["app_msg_ext_info"]["title"])
hrefs.append("https://mp.weixin.qq.com"+fixHref)
jsons = {"hrefs":hrefs,"titles":titles}
return jsons
#打开浏览器,进行工作
def start():
tempHref = openUrl()
# 获取页面文本
htmlStr = getHtmlStr(tempHref)
# 文本转json对象
jsonObj = htmlToJsonObj(htmlStr)
# f返回所需要的url数组
return jsonObjToArray(jsonObj)
最后通过启动程序的方法启动爬虫并打印爬取到的信息
if __name__=='__main__':
try:
hrefs = start()
count = len(hrefs["hrefs"])
for i in range(count):
print("标题:"+hrefs["titles"][i].encode("utf-8"))
print("爬取到的路径:"+hrefs["hrefs"][i].encode("utf-8"))
print("------------->>爬取并打印完毕")
except Exception as e:
print(str(e))
程序需要导入的包
import urllib2
import json
import re
依次赋值以上代码,填写要爬取的公众号,运行即可
来源:https://blog.csdn.net/max_wcsdn/article/details/82666088


猜你喜欢
- 目录一、代码分析二、完整代码写在最后想必写毕设的时候,大家都会遇到一个问题,那就是得在明评版的论文里面插入一个独创性声明。就因为这个事情,我
- 整理文档,搜刮出一个vue 计时器组件的代码,稍微整理精简一下做下分享。<template> <div>  
- 在js方法中添加"path= 过期时间"就可以解决这个问题。 例如://写cookies function setCoo
- Bootstrap,来自 Twitter,是目前最受欢迎的前端框架。Bootstrap 是基于 HTML、CSS、JAVASCRIPT 的,
- 本文实例讲述了JS表单验证插件之数据与逻辑分离操作。分享给大家供大家参考,具体如下:之前已经写过一个表单验证插件了,为什么还会重复造轮子呢?
- 一、IE透明度问题在IE的高度超过某一阀值时,会产生透明度不时失效的问题,这现象比较奇怪,(会有的时候全黑,有的时候全白)你有可能无法复现。
- 轮廓概述轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度。轮廓在形状分析和物体的检测和识别中很有用。 
- 这代表将模型加载到指定设备上。其中,device=torch.device("cpu")代表的使用cpu,而device
- xmlhttp,IE不支持overrideMimeType()方法,即使是IE7。 // Mozilla/Safari/
- 相对于C语言,golang是类型安全的语言。但是安全的代价就是性能的妥协。下面我们看看Golang不想让我们看到的“秘密”——string的
- 为了方便使用分类,我定义了一个分类表category,里面字段是id(自动编号) cat_name(分类名) pare
- 在我的职业生涯中,我写过、用过和看到过很多随意的脚本。一些人需要半自动化完成任务,于是它们诞生了。一段时间后,它们变得越来越大。它们在一生中
- 本文实例讲述了js简单实现Select互换数据的方法。分享给大家供大家参考。具体如下:这里基于javascript实现两个Select互换数
- 前言在这篇文章 Go Mutex:保护并发访问共享资源的利器 中,主要介绍了 Go 语言中互斥锁 Mutex&
- 1.能调用方法的一定是对象,比如数值、字符串、列表、元组、字典,甚至文件也是对象,Python中一切皆为对象。 str1 = 'he
- 1.重复声明var支持重复声明,let、const不支持重复声明。1.1 varvar a = 1;var a = 2;console.lo
- 1、炫酷星空登录实现代码<!DOCTYPE HTML><html><head><meta http
- 内涵:正则匹配,正则替换,页面抓取,图片保存 。实用的第一次 Python 代码 参考#!/usr/bin/env pythonimport
- Vue使用Swiper看这一篇就够了此案例实现需求完成swiper动态异步数据下的slide渲染自定义分页器样式解决loop:true设置时
- 在使用完模型之后,添加这两行代码即可清空之前model占用的内存:import tensorflow as tffrom keras imp