这篇博客呢,作者打算复盘下工作室期中答辩的内容。第一个任务是:爬取安居客二手房数据 数据要求10万条数据以上,并写入csv文件。第二个任务是:对数据做最基础和简单的可视化展示。说实话,刚看到这俩任务的时候我还是有点窃喜的,毕竟感觉还是蛮简单的,but,实际上做起来我还是遇到了诸多困难,比如说IP池的搭建和使用,这个困扰我至今没有解决;再比如说多线程,即使这个现在能初步运用,但是代码的实现还是过于粗糙了。
以下是复盘的思维导图:
爬取以下画圈数据写入csv,进行初步数据分析
1.网址分析
首先看一下网址的构成:
不难发现想换页可以将p1替换成p2,p3等等,想换城市就将sjz换成其他城市的名称。吐个槽,这个城市名称有的是拼音首字母,有的是全称,还得核对。
所以可以写成以下形式:
但是某小区的网址怎么获取呢,我们观察下源码
可以发现源码里携带着小区网址,那么我们可以先把网址爬下来后二爬。当然这也是造成爬取时间较长的一个关键原因。
2.匹配数据
1).xpath路径匹配
这个比较简单,就不多做介绍了。代码见后文。
2).bs4匹配
就是感觉这个库没有xpath路径匹配来得简单。下次有时间学学。
3.滑块验证以及模拟登录
这显然是一个极难的点,但是可以使用selenium解决,遗憾的是作者当时准备答辩的时候太仓忙了,加上需要爬的数据量有点大,加上自身的技术还不够,所以都是手动解决的。哇想起来都是泪啊,就一直守在电脑边等待报错。
至于登录的话作者暂时只能做到手动创建账号登录然后拿到cookie,当然这也是可以用selenium来自动获取的。
注释:这里UA池呢可以直接使用fake_useragent这个库就好了,作者当时为了实验一下调包才这么写的。哇这个线程池写的超级粗糙,后面可以在修改修改。以下是数据爬取完成的截图。
怎么说呢,这篇复盘其实已经从上学期快期末的时候开始写,已经过去大几个月,一直拖着没写完,总的来说,做完这个答辩给了我启发以及知识面的拓展,受益良多。但是代码写的太过粗糙了,有待改进。做一下后面的大致计划好了,可以再去巩固线程的知识,然后去学一下异常地抛出,还有数据清洗啥的......