Этот проект представляет собой сканер статей общедоступных учетных записей WeChat на основе Java, реализованный с использованием платформы сканера с открытым исходным кодом Web Collector и Spring Boot. Его можно получить через платформу Sogou, используя различные стратегии прокси-сервера для регулярного сканирования определенных статей общедоступных учетных записей, или с помощью. доступ к URL-адресу браузера вручную запускает сканирование.
Вы можете провести вторичную разработку на основе этого проекта и настроить Redis, чтобы избежать повторного сканирования (в этом проекте используется RamCrawler вместо BreadthCrawler), или вы можете реализовать OSS для дампа статических ресурсов и реализовать интерфейсы сохранения статей для сохранения библиотеки просканированного контента.
Особенности этого проекта:
Реализовано на основе искателя Web Collector и Spring Boot.
Существуют различные стратегии прокси, включая указание IP-адреса прокси-сервера, отказ от использования IP-адреса прокси-сервера и использование прокси-сервера Abu Cloud, чтобы избежать блокировки IP-адреса сканера.
Существует полная функция импорта результатов сканирования для поддержки использования на стороне сервера.
Интерфейсы, включая службу Redis, службу OSS и хранилище базы данных, зарезервированы.
Поддержка документации по интерфейсу Swagger.
установка maven
Настройте файл конфигурации application.yml
. Конкретные параметры см. в разделе Конфигурация.
Запустите проект WxCrawlerApplication
Откройте браузер и посетите http://localhost:11111/wxCrawler?proxyPolicy=none
, чтобы запустить задачу сканера.
После сканирования файл создается по пути, указанному в параметре crawler.weixin.outputPath
, и архивируется с использованием метода именования公众号名_文章名.html
Запустите проект, посетите http://localhost:11111/swagger-ui.html
и отобразите все внешние интерфейсы следующим образом:
Вы также можете получить представление об интерфейсе, напрямую обратившись к http://localhost:11111/help
:
Интерфейсы /parseWxArticleList
и /parseWxArticleDetail
используются для внутреннего тестирования для анализа списка статей в формате JSON и сведений о статье в формате JSON, полученных Fiddler из клиента WeChat. Поскольку Sogou WeChat в настоящее время включает только «подписные учетные записи» WeChat, а не «служебные учетные записи», для общедоступных учетных записей типа служебной учетной записи требуется дополнительная обработка. Кроме того, Sogou WeChat на данный момент не учитывает «количество прочтений» и «количество лайков» статей, поэтому их также необходимо получать посредством перехвата пакетов. Подробную информацию см. в разделе Поддержка сканирования статей сервисного аккаунта, а также подсчет чтения и лайков .
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
Осуществление складского хранения
Интерфейс хранения статей — com.xuzp.service.IArticleService
:
/**
* 保存文章
* @param articleVO
* @return
*/
ResultBase<String> save(ArticleTransferVO articleVO, Operation operation);
/**
* 查找文章
* @param articleVO
* @return
*/
ResultBase<ArticleTransferVO> find(ArticleTransferVO articleVO);
Класс реализации хранилища статей — com.xuzp.service.impl.ArticleServiceImpl
, расширьте его самостоятельно.
Расширение Redis
Интерфейс Redis — 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);
Класс реализации интерфейса Redis — com.xuzp.service.impl.RedisServiceImpl
, расширьте его самостоятельно.
Расширение ОСС
Интерфейс OSS — com.xuzp.service.IOssService
:
/**
* 把存于腾讯服务器上的包括视频,音频,图片等静态资源转储
* @param url 资源地址
* @return 新oss url
*/
ResultBase<String> resourceTranslation(String url);
Класс реализации находится по адресу com.xuzp.service.impl.OssServiceImpl
, расширьте его самостоятельно.
Настройте время автоматического сканирования
Код запланированного задания — com.xuzp.schedule.CrawlScheduledTasks
. Настройте время самостоятельно:
/**
* 定时爬虫去抓取微信公众号文章
*/
@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, "公众号爬虫");
}
Поддержка сканирования статей сервисного аккаунта, а также подсчета чтения и лайков.
Текущее сканирование основано на платформе Sogou WeChat http://weixin.sogou.com/
, поэтому на него распространяются следующие ограничения:
Включены только учетные записи подписки WeChat, но статьи из учетных записей служб WeChat не включены.
Можно просканировать только последние 10 записей, а все прошлые исторические записи просканировать невозможно.
Включена только основная информация о статье, включая название, автора, аннотацию, содержание статьи, время публикации и т. д., но не включается такая информация, как количество прочитанных статей и количество лайков.
В настоящее время этот проект предоставляет два дополнительных интерфейса для получения информации о статье путем анализа данных захвата пакетов Fiddler:
/parseWxArticleList: 解析抓包获取的文章列表json
/parseWxArticleDetail: 解析获取抓包获取的文章详情json,后于 parseWxArticleList 接口执行。
В будущем мы расширим анализ данных перехвата пакетов Fiddler для достижения автоматизации. Подождите следующих обновлений версии :)