Bei diesem Projekt handelt es sich um einen Java-basierten WeChat-Artikel-Crawler für öffentliche Konten, der mithilfe des Web Collector-Open-Source-Crawler-Frameworks und Spring Boot implementiert wird. Er kann über die Sogou-Plattform mithilfe verschiedener Proxy-Strategien zum regelmäßigen Crawlen bestimmter öffentlicher Kontoartikel abgerufen werden Der manuelle Zugriff auf die Browser-URL löst das Crawlen aus.
Sie können eine Sekundärentwicklung basierend auf diesem Projekt durchführen und Redis so konfigurieren, dass wiederholtes Crawlen vermieden wird (dieses Projekt verwendet RamCrawler anstelle von BreadthCrawler), oder Sie können OSS implementieren, um statische Ressourcen zu sichern, und Schnittstellen zum Speichern von Artikeln implementieren, um den gecrawlten Inhalt zu speichern.
Merkmale dieses Projekts:
Implementiert basierend auf dem Web Collector-Crawler-Framework und Spring Boot
Es gibt verschiedene Proxy-Strategien, darunter die Angabe einer Proxy-IP, die Nichtverwendung einer Proxy-IP und die Verwendung eines Abu Cloud-Proxys, um zu verhindern, dass Crawler-IP blockiert wird.
Es gibt eine vollständige Crawler-Ergebnisimportfunktion zur Unterstützung der serverseitigen Verwendung.
Schnittstellen einschließlich Redis-Dienst, OSS-Dienst und Datenbankspeicher sind reserviert.
Unterstützen Sie die Dokumentation der Swagger-Schnittstelle
Maven-Installation
Passen Sie die Konfigurationsdatei application.yml
an. Spezifische Parameter finden Sie unter Konfiguration.
Starten Sie das Projekt WxCrawlerApplication
Öffnen Sie den Browser und besuchen Sie http://localhost:11111/wxCrawler?proxyPolicy=none
um die Crawler-Aufgabe auszulösen
Nach dem Crawlen wird die Datei unter dem durch crawler.weixin.outputPath
angegebenen Pfad generiert und in der Benennungsmethode des公众号名_文章名.html
archiviert
Starten Sie das Projekt, besuchen Sie http://localhost:11111/swagger-ui.html
und zeigen Sie alle externen Schnittstellen wie folgt an:
Sie können die Einführung in die Benutzeroberfläche auch erhalten, indem Sie direkt auf http://localhost:11111/help
zugreifen:
/parseWxArticleList
und /parseWxArticleDetail
werden für interne Tests verwendet, um die von Fiddler vom WeChat-Client erfassten Artikellisten-JSONs und Artikeldetails-JSONs zu analysieren. Da Sogou WeChat derzeit nur WeChat-„Abonnementkonten“ und keine „Dienstkonten“ umfasst, ist für öffentliche Konten des Dienstkontotyps eine zusätzliche Verarbeitung erforderlich. Darüber hinaus berücksichtigt Sogou WeChat derzeit nicht die „Anzahl der Lesevorgänge“ und „Anzahl der Likes“ von Artikeln, sodass diese auch durch Paketerfassung ermittelt werden müssen. Weitere Informationen finden Sie unter Support für Crawling-Service-Account-Artikel sowie unter Lese- und Like-Zählungen .
server:
port: 11111
spring:
application:
name: wx-crawl
crawler:
weixin:
# 待爬取的微信公众号,支持爬取多个公众号,以;分隔(目前仅支持订阅号)
accounts: 雪球;缘聚小许
# outputPath 生成文章內容html文件
outputPath: D:/article_output
# 爬取访问一次后休眠时间,毫秒单位,为避免搜狗和微信封杀,建议设置至少3000以上
sleepTime: 5000
# 是否使用断点续爬,通过redis避免重复爬取
# 注意,由于会跳过已爬过的文章,因此就无法更新旧文章了
resumable: false
# 代理使用策略,包括不使用代理,使用指定代理IP以及使用阿布云代理
# 如: none | 222.182.56.50:8118,124.235.208.252:443 | abuyun
proxyPolicy: none
# 是否更新已存在的文章
updateArticle: true
proxy:
# 阿布云账号
abuyunAccount: xxxx
# 阿布云密码
abuyunPassword: xxxxx
Umsetzung der Lagerhaltung
Die Artikelspeicherschnittstelle ist com.xuzp.service.IArticleService
:
/**
* 保存文章
* @param articleVO
* @return
*/
ResultBase<String> save(ArticleTransferVO articleVO, Operation operation);
/**
* 查找文章
* @param articleVO
* @return
*/
ResultBase<ArticleTransferVO> find(ArticleTransferVO articleVO);
Die Artikelspeicher-Implementierungsklasse ist com.xuzp.service.impl.ArticleServiceImpl
. Bitte erweitern Sie sie selbst.
Redis-Erweiterung
Die Redis-Schnittstelle ist com.xuzp.service.IRedisService
:
/**
* @param key
* @param value
*/
void set(String key, String value);
/**
* @param key
* @return
*/
Boolean exists(String key);
/**
* @param key
* @return
*/
Object get(final String key);
Die Implementierungsklasse der Redis-Schnittstelle ist com.xuzp.service.impl.RedisServiceImpl
. Bitte erweitern Sie sie selbst.
OSS-Erweiterung
Die OSS-Schnittstelle ist com.xuzp.service.IOssService
:
/**
* 把存于腾讯服务器上的包括视频,音频,图片等静态资源转储
* @param url 资源地址
* @return 新oss url
*/
ResultBase<String> resourceTranslation(String url);
Die Implementierungsklasse befindet sich unter com.xuzp.service.impl.OssServiceImpl
. Bitte erweitern Sie sie selbst.
Passen Sie die automatische Crawling-Zeit an
Der Code der geplanten Aufgabe lautet com.xuzp.schedule.CrawlScheduledTasks
. Bitte passen Sie die Zeit selbst an:
/**
* 定时爬虫去抓取微信公众号文章
*/
@Scheduled(cron = "0 30 10,18 * * ?")
public void weixinCrawlTask() {
crawlerStater(new LazyLoader<Crawler>(){
@Override
public WxCrawler newInstance() {
return wxCrawlerConfig.wxCrawler(null);
}
}, WxCrawlerConstant.CRAWL_DEPTH, WX_CRAWLER, "公众号爬虫");
}
Unterstützung für das Crawlen von Dienstkontoartikeln sowie für die Anzahl der Leser und Likes
Das aktuelle Crawling basiert auf der Sogou WeChat-Plattform http://weixin.sogou.com/
und unterliegt daher den folgenden Einschränkungen:
Es sind nur WeChat-Abonnementkonten enthalten, Artikel von WeChat-Dienstkonten sind jedoch nicht enthalten.
Es können nur die letzten 10 Datensätze gecrawlt werden, und alle früheren historischen Datensätze können nicht gecrawlt werden.
Es werden nur die grundlegenden Informationen des Artikels berücksichtigt, einschließlich Titel, Autor, Zusammenfassung, Inhalt des Artikels, Veröffentlichungszeitpunkt usw., Informationen wie die Anzahl der gelesenen Artikel und die Anzahl der „Gefällt mir“-Angaben sind jedoch nicht enthalten.
Derzeit bietet dieses Projekt zwei zusätzliche Schnittstellen zum Abrufen von Artikelinformationen durch Parsen von Fiddler-Paketerfassungsdaten:
/parseWxArticleList: 解析抓包获取的文章列表json
/parseWxArticleDetail: 解析获取抓包获取的文章详情json,后于 parseWxArticleList 接口执行。
In Zukunft werden wir die Analyse der Paketerfassungsdaten von Fiddler erweitern, um eine Automatisierung zu erreichen. Bitte warten Sie auf nachfolgende Versionsaktualisierungen :)