微信公众号文章爬取技巧:抓取有用内容的秘诀

微信公众号是现在信息传播的重要平台之一,每天都有大量的文章在上面发布。但是我们并不是每个人都有时间去逐一阅读这些文章,因此,本文将介绍如何通过编程的方式自动抓取微信公众号文章,提取我们所需的内容。

一、抓取文章URL

要想抓取微信公众号文章,首先需要获取文章的URL。我们可以通过微信公众号后台管理的接口来获取文章的URL。

“` python
import requests

# 获取文章URL的接口
article_url_api = ‘https://mp.weixin.qq.com/cgi-bin/appmsg’

# 输入cookie信息和公众号偏移量,可以获取一定量的文章URL信息
def get_article_url_cookie(offset):
# 替换为自己的cookies信息
cookie = ‘xxx’
headers = {
‘Cookie’: cookie,
}
params = (
(‘action’, ‘list_ex’),
(‘begin’, ‘0’),
(‘count’, ‘5’),
(‘fakeid’, ‘123456’),
(‘type’, ‘9’),
(‘query’, ”),
(‘token’, ‘123456789’),
(‘lang’, ‘zh_CN’),
(‘f’, ‘json’),
(‘ajax’, ‘1’),
(‘random’, ‘0.12345678901234567’),
(‘random’, ‘0.12345678901234567’),
(‘lang’, ‘zh_CN’),
(‘created’, ‘7’),
(‘scene’, ‘124’),
(‘devicetype’, ‘Windows 10’),
(‘appmsg_token’, ‘123456789’),
(‘offset’, str(offset))
)

response = requests.get(article_url_api, headers=headers, params=params)
results = response.json().get(‘app_msg_list’)
urls = []
for res in results:
urls.append(res.get(‘link’))
return urls

# 通过公众号偏移量,可以获取一定量的文章URL信息
def get_article_url_by_offset():
for i in range(0, 50, 5):
urls = get_article_url_cookie(i)
print(urls)
“`

上面的代码使用了Python的requests模块,通过发送HTTP请求并解析相应的JSON格式数据获取URL信息。这里我们需要替换为自己的cookies信息和公众号偏移量。

二、抓取文章内容

获取文章URL之后,我们需要再次发送HTTP请求获取文章的具体内容。这里我们使用了Python的beautifulsoup库,它可以方便我们解析HTML格式的网页内容,并提取我们需要的信息。具体实现代码如下所示:

“` python
import requests
from bs4 import BeautifulSoup

cookies = {‘key’: ‘value’} # 替换成自己的cookies信息
headers = {
‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 UBrowser/6.2.3964.2 Safari/537.36’
}

def get_article_content(url):
response = requests.get(url, headers=headers, cookies=cookies)
response.encoding = ‘utf-8’
soup = BeautifulSoup(response.text, ‘html.parser’)
title = soup.select(‘#activity-name’)[0].get_text(strip=True)
author = soup.select(‘#meta_content > span.rich_media_meta.rich_media_meta_text.rich_media_meta_nickname’)[0].get_text(strip=True)
date = soup.select(‘#meta_content > span.rich_media_meta.rich_media_meta_text’)[1].get_text(strip=True)
content = str(soup.select(‘#js_content’)[0])
return title, author, date, content

url = ‘https://mp.weixin.qq.com/s/xxxxxx’
title, author, date, content = get_article_content(url)
print(“title:”, title)
print(“author:”, author)
print(“date:”, date)
print(“content:”, content)
“`

上面的代码中使用了#activity-name、#meta_content、#js_content等CSS选择器获取文章的标题、作者、发布日期、正文内容。

三、保存文章内容

抓取到文章内容之后,我们可以将文本内容保存为本地文件,以便后续的处理。这里我们使用Python自带的open函数,将文字内容写入本地文件中。

“` python
import requests
from bs4 import BeautifulSoup

cookies = {‘key’: ‘value’} # 替换成自己的cookies信息
headers = {
‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 UBrowser/6.2.3964.2 Safari/537.36’
}

def get_article_content(url):
response = requests.get(url, headers=headers, cookies=cookies)
response.encoding = ‘utf-8’
soup = BeautifulSoup(response.text, ‘html.parser’)
title = soup.select(‘#activity-name’)[0].get_text(strip=True)
author = soup.select(‘#meta_content > span.rich_media_meta.rich_media_meta_text.rich_media_meta_nickname’)[0].get_text(strip=True)
date = soup.select(‘#meta_content > span.rich_media_meta.rich_media_meta_text’)[1].get_text(strip=True)
content = str(soup.select(‘#js_content’)[0])
return title, author, date, content

# 将文章转成html格式,写入文件
def save_article_html(title, author, date, content, filename):
with open(filename, mode=’w’, encoding=’utf-8′) as f:
f.write(f’{title}

title: {title}

author: {author}

date: {date}

{content}’)

url = ‘https://mp.weixin.qq.com/s/xxxxxx’
title, author, date, content = get_article_content(url)
save_article_html(title, author, date, content, ‘article.html’)
“`

上面的代码中,我们先将文章内容转成html格式,再将其写入到指定的文件中。

四、抓取多篇文章

获取单篇文章是不够的,我们需要获取多篇文章来进行统计分析。这里我们使用一个名为Feedparser的库来获取微信公众号的RSS信息,从而获取文章列表。具体实现代码如下所示:

“` python
import feedparser

# 设置微信公众号RSS地址
rss_url = “https://mp.weixin.qq.com/s?__biz=xxxxx==&mid=xxxxx==&idx=xxxxx&sn=xxxxx==&chksm=xxxxx==#wechat_redirect”
# 解析RSS信息,获取文章列表
feed = feedparser.parse(rss_url)

urls = []
for entry in feed.entries:
url = entry.link
urls.append(url)

print(urls)
“`

上面的代码中,我们通过解析微信公众号的RSS信息,获取文章列表,并将URL信息存储到一个数组当中。

五、增加反爬虫处理

爬虫行为会对数据源进行一定的压力,因此,网站会采用一些反爬虫手段来限制我们的抓取。常见的反爬虫手段包括:IP封禁、Cookie限制、User-Agent限制、验证码等。要想成功爬取数据,我们需要针对这些反爬虫手段进行相应的处理。常见的做法包括:

1. 使用代理IP:通过使用代理IP的方式,可以避免被网站封禁IP地址

2. 修改请求头:通过修改请求头信息的方式,可以模拟浏览器的访问,绕过网站对User-Agent、Cookie等信息的限制

3. 添加延时操作:在发送请求之间添加适当的延时操作,可以减少网站对短时间内大量请求的反爬虫机制

“` python
import requests
from bs4 import BeautifulSoup
import time

# 获取文章内容,增加反爬虫处理
def get_article_content(url):
headers = {
‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 UBrowser/6.2.3964.2 Safari/537.36’,
‘Cookie’: ‘xxxxx’ # 自定义Cookie信息
}

count = 3
while count > 0:
try:
response = requests.get(url, headers=headers)
response.encoding = ‘utf-8’
soup = BeautifulSoup(response.text, ‘html.parser’)
title = soup.select(‘#activity-name’)[0].get_text(strip=True)
author = soup.select(‘#meta_content > span.rich_media_meta.rich_media_meta_text.rich_media_meta_nickname’)[0].get_text(strip=True)
date = soup.select(‘#meta_content > span.rich_media_meta.rich_media_meta_text’)[1].get_text(strip=True)
content = str(soup.select(‘#js_content’)[0])
return title, author, date, content
except:
time.sleep(2)
count -= 1
return None

url = ‘https://mp.weixin.qq.com/s/xxxxoo’
title, author, date, content = get_article_content(url)
if content:
print(“title:”, title)
print(“author:”, author)
print(“date:”, date)
print(“content:”, content)
“`

上面的代码中,在获取文章的过程中增加了三次重试操作,如果仍然无法获取文章内容,则返回None。

六、小结

以上是综合应用Python的请求库、beautifulsoup、FeedParser等相关库实现微信公众号文章的抓取的方法。不过,本文只提供了如何获取单篇文章的方法,实际应用中需要结合多线程或异步IO等技术,同时抓取多篇文章提高效率。此外,对于反爬虫处理,需要不断学习优化,有针对性的解决问题。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/154041.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-15 03:25
下一篇 2024-11-15 03:25

相关推荐

  • 使用vscode建立UML图的实践和技巧

    本文将重点介绍在使用vscode在软件开发中如何建立UML图,并且给出操作交互和技巧的指导。 一、概述 在软件开发中,UML图是必不可少的重要工具之一。它为软件架构和各种设计模式的…

    编程 2025-04-29
  • 如何抓取公众号文章

    本文将从各个方面介绍如何抓取公众号文章。 一、获取公众号文章的链接 获取公众号文章的链接是抓取公众号文章的第一步。有多种方法可以获取公众号文章的链接: 1、使用微信客户端或网页版,…

    编程 2025-04-29
  • 优秀周记1000字的撰写思路与技巧

    优秀周记是每个编程开发工程师记录自己工作生活的最佳方式之一。本篇文章将从周记的重要性、撰写思路、撰写技巧以及周记的示例代码等角度进行阐述。 一、周记的重要性 作为一名编程开发工程师…

    编程 2025-04-28
  • 堆叠图配色技巧分享

    堆叠图是数据可视化中常用的一种表现形式,而配色则是影响堆叠图观感和传达信息的重要因素之一。本文将分享一些堆叠图配色的技巧,帮助你创造更好的数据可视化。 一、色彩搭配原则 色彩是我们…

    编程 2025-04-27
  • 使用uring_cmd提高开发效率的技巧

    对于编程开发工程师来说,提高效率一直是致力追求的目标。本文将深度解析如何使用uring_cmd,提升工作效率。 一、常用命令 uring_cmd是一个非常强大的命令行工具,但是大部…

    编程 2025-04-27
  • 通信专业Python和Java的开发技巧

    本文旨在介绍通信专业Python和Java的开发技巧,为读者提供实用且可操作的思路和方法。 一、Python在通信领域中的应用 Python是一种优秀的程序设计语言,因其易学易用、…

    编程 2025-04-27
  • 前端引用字体的实现方法和技巧

    对于前端开发人员而言,字体關系着网站的整体美观度和用户体验。为了满足客户,开发人员经常需要引用特定的字体。在这篇文章中,我们将会详细解决前端引用字体的实现方法和技巧。 一、字体引用…

    编程 2025-04-27
  • if not in case – Python中使用if语句进行逻辑判断的技巧

    if语句是Python中进行逻辑判断的基础语句之一。在if语句中,我们可以使用not关键字和in关键字来进行更加灵活的判断。本文将详细介绍Python中使用if not in ca…

    编程 2025-04-27
  • JavaScript中修改style属性的方法和技巧

    一、基本概念和方法 style属性是JavaScript中一个非常重要的属性,它可以用来控制HTML元素的样式,包括颜色、大小、字体等等。这里介绍一些常用的方法: 1、通过Java…

    编程 2025-04-25
  • Android文件读取技巧:如何快速获取文件内容

    在Android开发中,读取文件是非常常见的操作。然而,在某些情况下,如果读取文件的操作不够高效,会导致程序出现卡顿、耗时等问题。因此,在本篇文章中,我们将介绍一些Android文…

    编程 2025-04-25

发表回复

登录后才能评论