爬虫入门|爬取众筹网站投资人列表

点击「DataCastle数据城堡」快速关注~

对于编程,我是个外行人。

在教育行业做了近10年的市场,过去想去了解一些竞争对手或是同行的信息,基本上也是靠一页一页的去翻,一行一行复制到Excel当中,定期去做更新做分析。

虽然很早就知道爬虫这个东西,但是真正了解它,并使用它还是从这次的课程开始。非常DC学院提供了这么一个学习交流和实战的平台,谢谢先生们把我领进门...哈哈哈

前两天学完基础阶段的课程,就想着能不能有啥机会练练手...机会来了

一个朋友微信上转了一个众筹的链接给我看,打开页面,看到有600多人已经预约,

爬虫入门|爬取众筹网站投资人列表

我本能地点进去看看,哪些人预约投资了,分别预约了多少金额...

爬虫入门|爬取众筹网站投资人列表

手机屏幕上是滑动加载的,滑动一下增加几个,看起来很不方便,也无法进行横向对比。于是我决定用刚刚学的爬虫试试手(这便有了今天的作业,说实话,之前不大敢提交,因为觉得会不会太小儿科了...)废话有点多了,入正题

1分析页面

从电脑版微信打开链接得到http://www.http://www.d5ct.com/project/416,使用chrome试验发现网页是JavaScript加载的,于是按照老师教的方法,打开检查页面。在XHR中成功找到相应的投资者列表。

爬虫入门|爬取众筹网站投资人列表

按照教程安装了JSONView,并打开网址:http://api.d5c360.com/v1/project/416/expect/invests?page=2&per_page=5,发现页面内是一个字典,我需要的条目都在里面,不过只有5个。分析一下网址,发现了page和per_page两个参数。几经尝试发现per_page如果去掉,一页能显示20个条目;如果不去掉,per_page最多能够显示100个条目,再多就无法正常显示了。有了这个信息,面对600多个投资者信息,节省了很多工作量。

接下来,就可以开始写代码了,在此之前,我还是检查了一下robots.txt , 出现的是404页面(居然没设反爬措施...哈哈哈)

2代码写啊写

作为初学者,决定严格按照教程,一步一步操作,先打印第一页抓取的内容看一看,再分析翻页的实现。

爬虫入门|爬取众筹网站投资人列表

爬虫入门|爬取众筹网站投资人列表

没有报错,成功返回了相关的信息,后面发现最后的数据:"list_count": 653} 不是我需要的,于是采用了字典的一个选择方法[‘investor_list’]进行一个简单的筛选,奏效。

接下来,按照教程,设置翻页,开始用user_data列表extend,最后用pandas将数据放入本地文件user.csv中。值得一说的是,由于已经知道了"list_count": 653,我设置per_page=100,所以我很容易知道,一共有7个page就行了。

爬虫入门|爬取众筹网站投资人列表

shift+F10 开始运行

爬虫入门|爬取众筹网站投资人列表

没有报错,大功告成......可是当我打开user.csv时还是出现了一个意想不到的小问题:

爬虫入门|爬取众筹网站投资人列表

user_name下面是什么鬼...乱码了。一番百度,最后添加了 encoding="utf_8_sig"问题得以解决。至此,首次爬虫尝试,经历了几次小波折终归拿到自己想要的数据。排序之后,发现有钱人真多...(已经不能安心的码字了)

爬虫入门|爬取众筹网站投资人列表

3总结

经过这个小小的尝试,总结了小小的经验,也发现了更多的不足,供大家参考:

1、网址的分析和修改尝试非常有用,一方面可以找到翻页规则,另一方面可以简化爬取的页数(如网址中的per_page);

2、编码信息非常的重要,encoding的设置能够解决一些乱码的问题;

3、不懂的时候,经常百度一下,会发现有很多朋友遇到过类似的问题;

4、这一次的实践,其实最终的数据表格中,我只想拿到‘investment’,‘user_id’,‘user_name’三部分的信息,对于‘head’‘invest_time’的信息我并不需要。但是如何在爬取阶段就进行筛选,试了好多次,都没找到合适的方法。特恳请大神老师们指导。

5、此外很奇怪的是抓取到的金额都是实际金额的100倍,比如¥8760对应抓取到的数字却是876000,这一部分是否能在抓取的时候就进行换算纠正呢。特恳请大神老师们指导。

PS:关注微信公众号回复关键词“众筹网站”即可获取完整源代码哟~

爬虫入门|爬取众筹网站投资人列表