数据采集第三次作业

数据采集第三次作业

作业1 :

1、实验内容

要求:

指定一个网站,爬取这个网站中的所有的所有图片,例如中国气象网(http://www.weather.com.cn)。分别使用单线程和多线程的方式爬取。(限定爬取图片数量为学号后4位)
输出信息:

输出信息:

将下载的Url信息在控制台输出,并将下载的图片存储在images子文件中,并给出截图。

运行结果


代码

https://gitee.com/x42bd82a1/fzu-data-acquisition-course/tree/master/3/1

2、心得

将之前作业的代码套上《算法与数据结构》课程中常见的递归即可完成
因为懒得处理线程的同步等问题,而性能的瓶颈大概在图片下载,页面的递归访问没有多线程实现
以及正常人能用一台机器每秒手工刷十几个页面吗 😃
作业2:

1、实验内容

要求:

使用scrapy框架复现作业1

输出信息:

同作业1

运行结果


代码

https://gitee.com/x42bd82a1/fzu-data-acquisition-course/tree/master/3/2

2、心得

在parse里写上yield scrapy.Request(url=href_url, callback=self.parse)之类的代码以实现递归访问
要记得去重,否则链接有环就会出问题,这里选用bloom_filter的BloomFilter()
要记得限速,因为scrapy自带多线程
作业3:

1、实验内容

要求:

爬取豆瓣电影数据使用scrapy和xpath,并将内容存储到数据库,同时将图片存储在imgs路径下。

输出信息:

序号 电影名称 导演 演员 简介 电影评分 电影封面
1 肖申克的救赎 弗兰克·德拉邦特 蒂姆·罗宾斯 希望让人自由 9.7 ./imgs/xsk.jpg
2 ...

运行结果


代码

https://gitee.com/x42bd82a1/fzu-data-acquisition-course/tree/master/3/3

2、心得

在pipelines中遍历item.fields.keys()以写入数据库,别用硬编码(课件的样例那种),麻烦且容易出错
导演和演员在同一标签中,以三个\xa0字符分隔
当然这不是正解,应访问电影对应页面获取完整信息

posted @ 2021-11-09 19:38  0x42bd82a1  阅读(42)  评论(0)    收藏  举报