七仔的博客

七仔的博客GithubPages分博

0%

爬虫入门

先叠甲,只用于学习和研究。个人修行不够,有错误的或者补充的地方请联系我,轻喷

爬虫入门

一、前言

先叠甲,只用于学习和研究。个人修行不够,有错误的或者补充的地方请联系我,轻喷。


二、运行方式

  1. 单脚本爬取

一般是直接使用reqrests库进行请求,在爬取维度比较少的情况下编程比较快,而且易上手

  1. 爬虫框架

用得最多的就是Scrapy,有完备的解决方案,但需要一定的门槛

  1. 调用浏览器

通过python调用浏览器进行爬取,更多时候这也被用过自动化测试,这种方式还可以绕过部分网站的爬虫校验程序,缺点是速度慢、耗资源量大


三、爬取方式

  1. 通过网站地图

大部分网站会提供网站地图,一般是/sitemap.xml,通过这里面提供的网址进行爬取,例如我博客的地图:https://www.baby7blog.com/sitemap.xml

  1. 双向爬取

分为水平爬取和垂直爬取,可以结合起来。这里可以参考我的博客:Scrapy实战:双向爬取(豆瓣电影Top250)

  1. 请求爬取

就是通过改变接口的api直接获取结果,一般用于页面请求比较规律的情况


四、运行方式

  1. 短时运行

如果是一次性获取数据的话可以直接在电脑上跑完就行可以

  1. 长时运行

通过服务器命令行运行7*24小时运行比较文档

  1. 定时运行

可以通过服务器定时(例如crontab)运行,或者使用一些爬虫管理软件,例如:Crawlab、Gerapy、Scrapydweb、SpiderKeeper、scrapyd、SwordCaster。推荐Crawlab,这里可以参考文章:https://blog.51cto.com/u_15050718/4322958


五、存储

  1. 数据库

可以存到各种数据库中,例如mysql、sqlite、mongodb等等

  1. 文件

表格形式的可以存为csv、xlxs等,或者转换为pdf和word,甚至可以存为txt或者log

  1. 源格式

可以直接根据请求的方式保存为html或者json格式


六、技术要点

  1. 验证码

一般是根据网站的验证码类型引入对应的识别包或者调用验证码识别api完成。

  1. 爬取限制

同ip或者同机器或者同浏览器的时间段内爬取量限制。可以通过修改请求UA、使用第三方代理方式,或者直接降低爬取频率到限制内。这里看可以参考我的博客:为Scrapy爬虫添加UA池和动态IP代理池

  1. 抓包

常用的抓包软件如:Fiddler、wireshark、安卓端的小黄鸟,如果还不行的话甚至可以在路由器端装插件抓包(只有部分浏览器支持)

  1. 影音资源

对于视频最常见的就是m3u8的,是一种对视频切片分段下载的方式,爬取时需要下载所有的片段然后根据m3u8文件使用命令行或者FFmpeg进行合并。需要注意有时网站会对切片文件进行加密或者修改切片的格式。

对于音频比较少见切片,但一般都会有加密,这可以去github上找解密包或者解密工具。

  1. 解析

常见的有html、json,对于json直接使用json解析然后获取就行,对于html推荐通过xpath解析,或者使用xml包解析,最后解析获得的字符串还可以使用正则表达式进行再次解析和提取。

  1. 编码

最常见的就是utf-8和gbk的格式转换

  1. 小说

现在的小说网站基本都会使用字体映射修改,就是通过修改字体中每个字的映射来让你抓取到的文章变成乱码,如果少量可以通过人工矫正,大量就不知道了。。。。

此为博主副博客,留言请去主博客,转载请注明出处:https://www.baby7blog.com/myBlog/139.html

欢迎关注我的其它发布渠道