关于复杂网站的前端并行爬取方式

2019-07-03 17:14:06 +08:00
 webee
朋友让我帮忙爬取一些数据,由于目标网站( http://epub.sipo.gov.cn/gjcx.jsp) 采用的防爬虫策略,简单的模拟请求不行,使用 headless browser 简单试了一下,也不行; 由于我并不怎么做爬虫这块,想到在前端使用 js 爬取再提交到后端应该是最简单的,于是在浏览器中简单实验之后发现是可行的。

于是写了一个后端服务用于分配任务和收集结果
https://github.com/webee/PatentFetcher
后端提供两个接口给前端爬虫使用:分配任务,提交结果

前端提供一个 user script 执行具体爬取
打开多个标签(注:浏览器有单个 ip 连接数限制),或多个浏览器, 甚至开不同的机器就可以实现分布式并行前端爬取了。

搞定这个事情之后,就有个想法:
前端爬取其实跟使用 headless browser ( Selenium,PhantomJS 等)原理一样的,都是模拟真实的前端环境,但这里的关键是分散地使用真实的客户端, 利用人们空闲的计算和流量资源,而不是使用自己的服务器。
这可以解决许多复杂爬取面临地很多痛点:ip 限制,人机验证,足够的服务器,爬取速率等

是否可以使这个方法通用化,类似众包的方式,搞一个任务平台,设计不同的执行前端( pc 客户端,浏览器 user script, app sdk, 专门的 app ),通过给用户付费,或者给开发者任务积分实现互助爬取,以解决一些复杂网站的爬取问题?

我搜索了一下关于前端爬虫的项目,有些是纯独立客户端的前端爬取,有个类似想法的 DSpider,没怎么开发了。

一个人的想法总是有局限的,
欢迎大家讨论一下,这个事儿是否有意义,是否可行?
3012 次点击
所在节点    分享创造
9 条回复
ho121
2019-07-03 17:46:25 +08:00
买代理不行?
webee
2019-07-03 18:00:45 +08:00
@ho121 这里主要不是代理的问题,如果能简单的在后端爬取,代理当然可行。
这里的问题是对于复杂的不那么好爬取的网站使用前端爬取,解决各种后端爬取的痛点,同时实现资源共享。
qilishasha
2019-07-03 18:01:15 +08:00
在某宝有人出售肉鸡 API,便宜得很,不知道是不是有法律风险
silencefent
2019-07-04 08:59:46 +08:00
流量宝这个软件听说过吗,理论上和你这个差不多一个意思
Fcsle
2019-07-04 10:33:23 +08:00
@qilishasha 关键词是啥
qilishasha
2019-07-04 13:02:22 +08:00
@Fcsle 所有的卖代理的都有
webee
2019-07-04 15:31:19 +08:00
@silencefent 流量宝还是使用自己的的服务器来做刷流量的事情,其实我想的是真实用户共享合作来分享算力和流量,和众包是一个意思。
webee
2019-07-04 15:34:40 +08:00
@silencefent 不好意思,仔细了解了一下,流量宝,确实也是共享的思想。。
yangweijie
2019-07-11 17:30:48 +08:00
专利这块爬取是很麻烦的,包括天眼查 和 zf 统一信用代码 甚至用上了 极验验证码。我都奔溃了,然后搞了个和你们思路一样的人肉采集,本来想开发 像京价宝 这样的插件的,时间未允许,后来就直接书签 写动态 js 采集 并请求后端更新数据,但是 必须协议一致。https 必须也 https。然后老板嫌麻烦 买了企查查的接口。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/579714

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX