微信公眾號文章爬取技巧:抓取有用內容的秘訣

微信公眾號是現在信息傳播的重要平台之一,每天都有大量的文章在上面發布。但是我們並不是每個人都有時間去逐一閱讀這些文章,因此,本文將介紹如何通過編程的方式自動抓取微信公眾號文章,提取我們所需的內容。

一、抓取文章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/zh-hant/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

發表回復

登錄後才能評論