问题补充说明:爬酷狗的歌词(数据超过5000)
0x000数据采集
数据采集是先拉丝坏才初一个很宽泛的概念,总的来说应该包含以下部分。
选择采集目标源–>组织构建数据库–>编写爬虫–>数据清洗–>数据整理–>存一充贵入数据库,一般情况下选择目标源和构建数据库是其中的主要元素。目标源决定你收集到数据的可用性,爬虫决定你的计划是否可达。
0x001目标源料钢析准院误星州做选择个人感觉目标源选厚取应按照以下条目进行排序:数据相关性、易爬取程度、数据量、robots协议,当然根据自己需求可以灵活变动。同等情况下尽量避免大型企业的官网,因为其中大部分都具备反爬策略(乡映七强印心当然有时间可以选择以下,这个斗智斗勇的过程挺锻炼的
0x010爬虫推荐使用的库有Reque础混之sts、BeautifulSoup、scrapy、selenium
如果对于效率需求不是特别高,可以考虑使用Requestspos拿真孙t请求搜集页面,然后使用BeautifulSoup分析页面标签,这样实现固技坏迫究相庆兵准较为简单,也能解决大部分需速掉约求。
如果对效率比较重商促给水教治刑省岁草音视,或需要完成一个工程化更用度剂思制封组的采集项目,Scarpy可以作为首选。对分布式处理的良好支持和清晰的模块化层次在提升效率的同时更易于进行代码的管理。
对http的相关请求,使用requests比用其他库函数更加明智。
如果你处理的页面大量使用了js或者存在验证码处理过程就比较麻烦了不过selenium仍然可以解决你大部分需求。
0x011些王北剂切均矛心办官试数据清洗因为种种原因,我们获得的数据和期望中的总有一定的差别,这一部分的任务就是消除异常数据将其转换为易于处理的形式。
数据的异常主要包括:数练去呢黄计体据格式异常和数据内容异常。
你需要的数据可能存储于一个PDF、word、jpg格式的文件中,将它们转换成文本然后提取相应的信息是数据清洗工作的一部分。对这部分入济米各气互出供便密我们可以使用Python的Pillow、Tesseract、NumPy来进行相关的处理,当然利用第三方接口也是个不错的主意。
另外,因为网页发布者的疏忽,网页上有部分数据和其他页面呈现不同,但你特每益奏攻远可能把这部分数据也剂级元围始略爬取下来。这时你需要进行一定的处理将数据格式进行统一。
0x婷脸孔财务状司植100反爬虫这部分是爬虫中最有意思的部分,你需要与对方斗智斗勇,很可能你还没有想好怎么绕过他的机制,对方又对反爬机制进行了更新。97年eBay和Bidder部此养德军什陆松’sEdge之间的爬虫与反爬虫策略为后来的数据采集者和运维工程师提供了不少示例,但现今html的迅速发展,似乎对双方也有不小的提示。
目前常见的反爬虫机制主要有如下几种:
1.验证码
从最基础的字符识别验证码,到后来文字验证码,表达式验证码,滑动验证码。虽然层次多样,但处理机制大概相同,最基础的应用一些计算机图形学的知识就可以解决,深层次的利用机器学习训练相关识别软件也能破解。12306的图片相关性验证码主要基于数据的深度拓扑,但是其对于人类本身也是一个不小的挑战,特别是在抢票的时候突然让你选出下图中所有的Lan口,除非你对计算机硬件有所了解,不然选出正确答案确实不易。但是其也有一定的破解方案,仍然利用图像识别结合用户反馈,似乎铁友有一段时间推出过一个大众活动,使用手机帮助进行图像标识,用白菜价获得了数百万标记好的数据,在后来的购票中只能选择相应的验证码。
2.表单隐藏内容
有些页面表单会向用户隐藏一些信息,如果你使用爬虫不加以区分而填写了相应的字段,很可能会被对方直接判为一个爬虫,然后进行ip封禁。
3.页面数据显示处理
有些页面会将数据进行重排组成正确的数据。如果你在爬取过程中没有注意也只能得到一些毫无价值的内容。
Emmm…
本来想弄一个验证码识别的小程序但发现使用Python的Tesseract还需要自己标注一些数据但本意是弄一个自动训练的识别工具所以暂时搁置等以后有了相关想法再开始动工
标签:爬虫,采集,来自