最近接到需要,要爬取 medium
,看了一下资料,决定整理起来。
参考资料
爬取须知
medium
靠GraphQL
返回数据,这个基本上就不能使用requests
之类的请求爬虫爬了- 但是,如果在用户的
url
后面加上?format=json
就会返回json
数据 - 封了,但又没完全封
- 但是,如果在用户的
- 所以选择了模拟浏览器,这里我选择的是
Playwright
medium
经过不断的迭代更新,有多种版本,这个后续会说明
medium 多种版本说明
经过看
看到有这么一段代码
https://medium.com/@${username}?format=json
举一个例子
https://medium.com/@GoldFeverAdmin
直接访问是可以访问的,如果变成下面这样
https://medium.com/@GoldFeverAdmin?format=json
就会有 json
数据返回过来,可以和之前的页面对的上。
这是其中一个版本。
但是,有的用户名加上这个返回的是 404
,如
https://medium.com/@copuppy-bsc
但是,如果访问
https://medium.com/copuppy-bsc
发现是可以正确访问的,并且加上 ?format=json 也可以正常返回 json 。
说明,这个 usename
是不带 @
的。
所以,目前我们找到了两个版本的链接。
那么, username
怎么得到呢,这个你 follow
一个用户后,打开,就是了,但是,有的时候会出现下面这个情况
https://co-puppy.medium.com/
这个时候就要
https://medium.com/@co-puppy
https://medium.com/co-puppy
自己尝试了。
解析代码
1 | msg = response.txt |