Python爬虫:基于大量数据源的定制化爬虫(一)

最近在做的事情比较坑也比较有趣,分享一下:

业务场景:有10w+的的网站,现在需要抓取这些网站下某些频道的具体数据。

解决思路

1.定向爬虫可行性太低,即便是那种配置化的爬虫。开发的时间成本和维护成本太高,假如网站改版相当于爬虫需要重写。

2.然后来找规律,发现所需要的数据的行为模式基本都是从列表页进-->文章页,而具体的文章就是我们需要的数据。见下面识别效果图(标红部分)

Python爬虫:基于大量数据源的定制化爬虫(一)_第1张图片
列表区域识别

3.那么思路基本明确了,列表识别;过滤所需要下载的列表;对列表页翻页;对文章页下载

4.与传统定向爬虫相比,不再只抓取特定字段,而是整页抓取,结构化后移。

设计概念图

Python爬虫:基于大量数据源的定制化爬虫(一)_第2张图片
大数据源的定制化爬虫概念图

零零碎碎

1.对目标网站进行BFS(广度优先遍历),层级可以进行限制比如只点击两层。并对访问目标进行过滤,对反向特征特别明显的进行提速。

2.链接和点击事件的后续任务需要层级+1,而iframe不需要,因为iframe应该就是当前层级的内容。

3.列表识别需要用到selenium,涉及主视图区域的判断,下载翻页就无所谓了看你心情,翻页最好使用selenium,不然会麻烦一点。

4.有趣是真的有趣,自己一边写一边学到不少;坑是因为一旦样本量上来了,你想做通用,同时顾及召回率与准确率难度太大太坑。

5.列表识别看下一个文章

你可能感兴趣的:(Python爬虫:基于大量数据源的定制化爬虫(一))