序
原文地址:Python 简单关键字爬取公众号文章
爬取目标:微信公众号“纵梦广科”中“表白墙”(可选“吐槽墙”)的文章
爬取字段:表白对象、表白内容
爬取缘由:分析“表白墙”上的同学什么说得多的词
爬取工具:matplotlib、wordcloud、jieba
爬取结果: “表白墙”文章160篇
爬取收获:简单爬取公众号文章、简单生成词云
爬取注意:
- 因为爬取内容可以简洁地直接保存txt文本进行绘画词云分析,所有并没有存入数据库
- 本项目代码不具有可复用性,无论是登录的cookie还是文章的页数都需要重新手动获取输入
- 代码中cookie的值太长了,都在一行不方便阅读,于是做了分行,可以根据个人喜好选择
- 本代码通用于爬取公众号文章的标题和url,如需要爬取文章内容则需要手动更改爬取规则
- token的值是爬取的公众号的标识符,如果更换公众号就需要更改该值
- 本项目代码因为“表白墙”与“吐槽墙”网页结构相同,因此可以自行选择输入“表白墙”或“吐槽墙”进行爬取
- 词云图在本文档后面
- 获取cookie等操作步骤在本文最后
ps:
在参考文章中的例子是直接搜索公众号全部内容文章的,我测试过这样爬取全部的话只能爬几页就被提示”操作太频繁“而无法爬取,但换成关键字”query”搜索的话没有出现问题,目前本代码爬取”表白墙“32页并没有本禁止。本来还尝试如何避免封装爬取全部文章但没有成功,但如果关键字是空白符或者其他标点符号的话也能获取大部分文章
代码
# -*- coding: utf-8 -*-
import requests
from PIL import Image
from lxml import etree
import time
import random
import matplotlib.pyplot as plt
import numpy as np
from wordcloud import WordCloud
import jieba
# 使用Cookie,跳过登陆操作
headers = {
"Cookie": "noticeLoginFlag=1; remember_acct=820605644%40qq.com; "
"ua_id=F89e6CvMPIib8tkPAAAAAE8A9_O5KrS5oMM390XQRHI=; mm_lang=zh_CN; pgv_pvi=1996118016; "
"noticeLoginFlag=1; remember_acct=820605644%40qq.com; pgv_si=s2063726592; ticket_id=gh_86437b3d3630; "