Este proyecto es un rastreador de artículos de cuentas públicas de WeChat basado en Java, implementado utilizando el marco de rastreo de código abierto de Web Collector y Spring Boot. Se puede obtener a través de la plataforma Sogou utilizando una variedad de estrategias de proxy para rastrear periódicamente artículos de cuentas públicas designadas, o mediante. acceder a la URL del navegador manualmente activa el rastreo.
Puede realizar un desarrollo secundario basado en este proyecto y configurar Redis para evitar el rastreo repetido (este proyecto usa RamCrawler en lugar de BreadthCrawler), o puede implementar OSS para volcar recursos estáticos e implementar interfaces de guardado de artículos para guardar el contenido rastreado.
Características de este proyecto:
Implementado en base al marco de rastreo de Web Collector y Spring Boot
Existen varias estrategias de proxy que incluyen especificar la IP del proxy, no usar la IP del proxy y usar el proxy de Abu Cloud para evitar que se bloquee la IP del rastreador.
Existe una función completa de importación de resultados del rastreador para admitir el uso del lado del servidor.
Las interfaces que incluyen el servicio Redis, el servicio OSS y el almacenamiento de bases de datos están reservadas.
Soporte de documentación de la interfaz Swagger
instalación experta
Ajuste el archivo de configuración application.yml
. Para parámetros específicos, consulte Configuración.
Inicie el proyecto WxCrawlerApplication
Abra el navegador y visite http://localhost:11111/wxCrawler?proxyPolicy=none
para activar la tarea del rastreador.
Después del rastreo, el archivo se genera en la ruta especificada por crawler.weixin.outputPath
y se archiva en el método de denominación de公众号名_文章名.html
Inicie el proyecto, visite http://localhost:11111/swagger-ui.html
y muestre todas las interfaces externas de la siguiente manera:
También puede acceder directamente http://localhost:11111/help
para obtener la introducción de la interfaz:
/parseWxArticleList
y /parseWxArticleDetail
se utilizan para pruebas internas para analizar el json de la lista de artículos y el json de detalles del artículo capturados por fiddler desde el cliente WeChat. Dado que Sogou WeChat actualmente solo incluye "cuentas de suscripción" de WeChat y no "cuentas de servicio", se requiere procesamiento adicional para las cuentas públicas del tipo de cuenta de servicio. Además, Sogou WeChat actualmente no incluye el "número de lecturas" y el "número de me gusta" de los artículos, por lo que también deben obtenerse mediante captura de paquetes. Para obtener más información, consulte la asistencia para rastrear artículos de cuentas de servicio, así como el recuento de lecturas y me gusta .
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
Implementación de almacenamiento.
La interfaz de almacenamiento de artículos es com.xuzp.service.IArticleService
:
/**
* 保存文章
* @param articleVO
* @return
*/
ResultBase<String> save(ArticleTransferVO articleVO, Operation operation);
/**
* 查找文章
* @param articleVO
* @return
*/
ResultBase<ArticleTransferVO> find(ArticleTransferVO articleVO);
La clase de implementación de almacenamiento de artículos es com.xuzp.service.impl.ArticleServiceImpl
, extiéndala usted mismo.
Extensión de Redis
La interfaz de Redis es 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);
La clase de implementación de la interfaz Redis es com.xuzp.service.impl.RedisServiceImpl
, extiéndala usted mismo.
extensión OSS
La interfaz OSS es com.xuzp.service.IOssService
:
/**
* 把存于腾讯服务器上的包括视频,音频,图片等静态资源转储
* @param url 资源地址
* @return 新oss url
*/
ResultBase<String> resourceTranslation(String url);
La clase de implementación se encuentra en com.xuzp.service.impl.OssServiceImpl
, extiéndala usted mismo.
Ajustar el tiempo de rastreo automático
El código de la tarea programada es com.xuzp.schedule.CrawlScheduledTasks
, ajuste el tiempo usted mismo:
/**
* 定时爬虫去抓取微信公众号文章
*/
@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, "公众号爬虫");
}
Soporte para rastrear artículos de cuentas de servicio, así como recuentos de lecturas y me gusta.
El rastreo actual se basa en la plataforma Sogou WeChat http://weixin.sogou.com/
y, por lo tanto, está sujeto a las siguientes restricciones:
Solo se incluyen las cuentas de suscripción de WeChat, pero no se incluyen los artículos de las cuentas de servicio de WeChat.
Solo se pueden rastrear los últimos 10 registros y no se pueden rastrear todos los registros históricos anteriores.
Solo se incluye la información básica del artículo, incluido el título, autor, resumen, contenido del artículo, hora de publicación, etc., pero no se incluye información como el número de lecturas del artículo y el número de me gusta.
Actualmente, este proyecto proporciona dos interfaces adicionales para obtener información del artículo analizando los datos de captura de paquetes de Fiddler:
/parseWxArticleList: 解析抓包获取的文章列表json
/parseWxArticleDetail: 解析获取抓包获取的文章详情json,后于 parseWxArticleList 接口执行。
En el futuro, ampliaremos el análisis de los datos de captura de paquetes de Fiddler para lograr la automatización. Espere las actualizaciones de versiones posteriores :)