Open ChengjunJia opened 6 years ago
遗憾的是,huginn似乎也不能用了。
流程上其实已经能跑通了,还是作者提供的思路,通过微信公众号的即刻 topic 拿到微信公众号的更新列表,然后用 huginn 解析。
这里有一个问题是,在最初的一步,没有办法很直接的把微信公众号和即刻 topic 对应起来,需要我们手工地先根据公众号去即刻里搜索得到这个微信公众号的 topic。
自己造轮子需要稳定的代理池,个人肯定是没能力了,爬来的免费代理太不稳定了。 @Linusp +1。RSSHub 的流程我已经用了很久了。还有一个平台上的公众号不是很全, 主题比较偏向于海外华人。https://posts.careerengine.us/posts/original
其实这里好多主题都和我 huginn 抓的重复了,有空一一补上。
有一个新思路是通过“微信读书”,可以查看到该公众号里面的所有文章。 具体见:https://www.v2ex.com/t/479441
@wizos 可以观望一段时间,这个感觉不稳
半年过去,感觉微信读书的 API 还挺可以,拿到的数据很全,甚至可以全文。
但是直接在微信读书里搜索公众号并不一定可以搜到结果:目前来看,如果某个公众号之前从未有人在微信手机端点击右上角的「···」,选择「在微信读书中打开」,那么该公众号不会出现在微信读书的搜索结果数据库中。所以必要的第一步都是需要借助手机端先「初始化」一个公众号书集,拿到 bookId 后,才能用 API 访问文章列表。
不过一旦拿到了 bookId,之后的工作相当顺利。
这里记录一下大概的研究结果,希望可以有所帮助……有错或者遗漏的地方也欢迎指正补充。
https://i.weread.qq.com/book/articles?bookId=MP_WXS_3080584025&offset=0&count=10
URL 参数:
bookId
:每个公众号对应的唯一 ID,可以通过搜索 API 拿到。如果没有搜到,需要用上述方法「初始化」。offset
:分页用。count
:数量。Headers:(用于用户登录身份凭证,需要在手机上抓取得到。)
accessToken
:当前登录用户的 session_key,过期时长是 2 小时,格式大概如 Vp1IaX46
。vid
:当前登录用户唯一 ID,不会变。格式大概如:31087522
。根据经验来看,貌似大部分都不能直接搜到;即使有初始化的话,如果和很多书籍重名,也很难搜到。
https://i.weread.qq.com/store/search?keyword=毕导&count=20
参数不多说了。注意这个 API 也需要上面提到的 headers 作凭证。
这是我抓到的完整的搜索 API:
GET /store/search?keyword=关键词&author=&authorVids=&categoryId=&count=20&maxIdx=0&type=0&v=1&outer=1&fromBookId=
。然而客户端中只有一个搜索框(forkeyword
),并不能猜出其他大部分 ID 参数具体对应什么。
这个 API 感觉还是更适合私人使用。因为 accessToken
只有两小时的时限,而且即便如此,在开源的 RSSHub 中,暴露出所需要的微信账号 accessToken
和 vid
会比较危险。当然如果有更好的解决方法也欢迎提出。
这个接口必须保证微信读书账号是“使用微信登录”访问才有结果,使用邮箱注册的微信读书账号访问是空的。
微信读书这个接口的确很不错。 绝大多数的公众号都可以获取 bookid,相对困难的只是需要解决token的自动更新就可以了,而这个自动更新,可以借助它的网页版来实现。 感谢楼上各位提供的思路!
@wuhgit 请教怎么通过网页自动更新token?
@wuhgit 请教怎么通过网页自动更新token?
在登录状态下,网页版的token是过期就自动更新的
@wuhgit 试了下,它似乎只是自动更新了cookie。 网页版读书没有用到token?
我在找寻公众号资料抓取时,发现了http://www.huginn.cn/这个项目 大致看了一下,应该可以满足要求,不知道RSSHub这边有没有考虑,两个team合作一下,解决微信公众号抓取问题?