Python中如何实现采集微信公众号文章并分析其来源,例如chuansong.me网站?

null
Python中如何实现采集微信公众号文章并分析其来源,例如chuansong.me网站?

44 回复

这个网站要发财了

chuansong.me 的站点信息
备案信息:浙 ICP 备 15001855 号-1(个人备案)
该网站共有 2,061,848 个网页被百度收录

按这种收录数,每天至少 10-15 万独立 IP 访问
而本人什么都不用干,就给服务器钱就可以了

牛!


要采集微信公众号文章并分析其来源(比如来自chuansong.me),核心是模拟请求获取HTML,然后用解析库提取信息。这里的关键点在于:微信公众号文章通常有反爬,直接请求可能失败,需要模拟浏览器行为。chuansong.me这类聚合网站结构相对固定,更容易抓取。

下面是一个完整的示例,使用requestsBeautifulSoup来抓取chuansong.me上的文章,并提取可能的公众号来源信息。我们假设你已经有了目标文章的URL。

import requests
from bs4 import BeautifulSoup
import re

def fetch_wechat_article_info(url):
    """
    从chuansong.me页面抓取文章信息,并尝试分析公众号来源。
    """
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
    }

    try:
        # 1. 发送HTTP请求获取页面内容
        response = requests.get(url, headers=headers, timeout=10)
        response.raise_for_status()  # 检查请求是否成功
        response.encoding = 'utf-8'  # 设置编码

        # 2. 使用BeautifulSoup解析HTML
        soup = BeautifulSoup(response.text, 'html.parser')

        # 3. 提取文章标题(根据chuansong.me的实际结构调整选择器)
        #    通常标题可能在<h2>或包含特定class的标签里
        title_elem = soup.find('h2', class_='rich_media_title') or soup.find('h2')
        title = title_elem.get_text(strip=True) if title_elem else "未找到标题"

        # 4. 尝试提取公众号名称(来源)
        #    在chuansong.me,公众号信息可能出现在作者区域或某个meta标签里
        #    这里我们查找包含“公众号”或“来源”字样的文本
        source = "未知来源"
        # 方法1:搜索包含特定关键词的文本
        pattern = re.compile(r'公众号|来源|出自')
        for elem in soup.find_all(text=pattern):
            if elem.parent.name in ['span', 'p', 'div']:
                # 简单提取相邻文本作为来源
                source_text = elem.parent.get_text(strip=True)
                # 做一些清理,提取可能的公众号名称
                match = re.search(r'[::]\s*([^\s,。]+)', source_text)
                if match:
                    source = match.group(1)
                    break

        # 方法2:直接查找常见的公众号信息容器(根据实际网站结构调整)
        # 例如,有些页面会在class为"profile_nickname"的span里放公众号名
        profile_elem = soup.find('span', class_='profile_nickname')
        if profile_elem:
            source = profile_elem.get_text(strip=True)

        # 5. 提取文章正文(示例)
        #    微信公众号文章的正文通常在div class="rich_media_content"里
        content_div = soup.find('div', class_='rich_media_content')
        content = content_div.get_text(strip=True)[:200] + "..." if content_div else "未提取到正文"

        return {
            'title': title,
            'source': source,
            'content_preview': content,
            'url': url
        }

    except requests.RequestException as e:
        print(f"请求出错: {e}")
        return None
    except Exception as e:
        print(f"解析过程出错: {e}")
        return None

# 使用示例
if __name__ == "__main__":
    # 替换成你要分析的chuansong.me文章URL
    test_url = "https://chuansongme.com/n/123456789"  # 示例URL,实际需要替换
    article_info = fetch_wechat_article_info(test_url)

    if article_info:
        print(f"文章标题: {article_info['title']}")
        print(f"疑似公众号来源: {article_info['source']}")
        print(f"内容预览: {article_info['content_preview']}")
        print(f"原文链接: {article_info['url']}")
    else:
        print("抓取失败")

代码解释:

  1. 请求与模拟:设置了User-Agent头模拟浏览器,绕过基础反爬。
  2. 解析结构:使用BeautifulSoup解析HTML,通过查找特定标签(如<h2><div class="rich_media_content">)来定位标题和正文。注意:网站结构可能变化,需要根据实际页面调整选择器。
  3. 来源分析
    • 方法一:用正则表达式搜索页面文本中出现的“公众号”、“来源”等关键词,并提取其后的名称。
    • 方法二:直接查找已知的公众号信息容器(如<span class="profile_nickname">),这需要你事先观察目标网站的结构。
  4. 异常处理:包含了网络请求和解析过程中的基本错误捕获。

重要提醒:

  • 网站结构变化:chuansong.me的HTML结构可能会更新,如果选择器失效,你需要用浏览器开发者工具重新检查元素,更新代码中的查找逻辑。
  • 反爬措施:如果遇到更严格的反爬(如验证码、IP封锁),可能需要使用Selenium模拟完整浏览器行为,或采用代理IP池。但基础请求通常够用。
  • 法律与道德:确保你的抓取行为符合网站robots.txt规定,并尊重版权,仅用于个人学习或合法分析。

一句话总结:核心是解析HTML结构并定位来源信息,但需注意网站反爬和结构变动。

什么叫躺着挣钱? 一句话,牛逼

只可惜格局还是小了点,这种数量文字的索引量,如果把平时收入的 1/3 拿出来买大站的链接。中文网站前三名都能做上去的

其实这功能应该由微信提供,我就不信只有我一个人喜欢在电脑上看公众号。

牛逼。做些技术苦力外包 不如自己搞些项目。

记得以前发网站上来就会被 DDOS ,这不是害人家么

mark 这个站关注很久了

估计站长想打死你了。。。 hhh

贴图的查询网站是?

aizhan.com
记得作者之前在 weibo 说会分享,但后来就没消息了。

企鹅会不会报警抓人?

站长就在 V2EX

发现备案号都查询不到呀

采集站的收录量也能这么高。。。?

wx.sogou.com 腾讯投资了搜狗,这个就是微信公众号官方的 WEB 展示页面

去后缀为 gov.cn 查询

竟然出现过我。哈哈

微信公众号文章采集,,,年初的时候,我见过有人卖过源码。
而且微信公众号文章采集,,收录过亿的都有。。。具体你可以百度。
这个和现在百度的算法有关,,,很多时候原创(当然高质量原创另说)的确敌不过采集,,我自己的站就是。

不定时采集吗?腾讯不封?

学会一种新思维, 谢谢楼主

别跑题啊
我也好奇这块采集怎么处理的
有大牛讲解下么

站长把域名注册人都隐藏了,显然是对此方法可能造成的“法律风险”做了一定的规避
不过三年能做到这种流量,很不错了

的确,这种网站闷声赚钱是最好的

https://github.com/bowenpay/wechat-spider
之前 v 站不是有人分享过他这个项目么

好奇这个网站是手动收录的吗?

很久以前问过他本人,就是他没透露。 他做的比搜狗的要早。

页面上没有广告,流量如何变现?

醉了 没广告?、你确定?肯定是浏览器有屏蔽插件 吧,一个页面上 好些广告的

不过我个人觉得这个站不错啊
至少像我这种不用微信的人来说还是很方便的。

的确是发财了 闷声发大财啊

那么杂感谢我那。。哈

支持 D 一下 微信公众号盗抄 这个盗抄公众号。。。

垃圾采集站 以偷东西为生

微信生态封闭,简直是自食其果。

据我所知,早期的一些直接采微信的采集方法均已失效,这个网站可能有内部资源(我不认识作者,纯猜测)。

同感,手机看着太累了,图片加载也慢。

看代码 是采集的 http://weixin.sogou.com/ 这似乎不是 chuansong.me 应该是直接采集的 微信数据才对吧

仔细研究,发现采集的是 sougou,不多最近数据代码看,看来,他选用每日采集,符合微信最新 10 篇文章规则。

之前也做了一款 WordPress 插件一键导入微信文章到网站中,并且突破防盗链,能够把图片下载下来,支持自动同步,如果要采集所有文章提供这样的服务,感兴趣可以搜一下 beepress,http://artizen.me/beepress

现在大部分爬虫都是采集搜狗的,还有一种基于中间人代理去爬取,现在看传送门的文章里面的图片好像都被防盗链弄掉了

这个站已经不行了,被百度上线的算法打击,断崖式下滑 http://ziyuan.baidu.com/wiki/1050

但是每日访客还是很牛逼

比以前掉了太多了,当然瘦死的骆驼比马大 https://lishi.aizhan.com/chuansong.me/randabr/2017-05-05/2017-11-05/

回到顶部