搞定!数据采集和融合技术的第三次作业
作业一
要求:指定一个网站,爬取这个网站中的所有的所有图片,例如中国气象网(http://www.we ather.com.cn)。分别使用单线程和多线程的方式爬取。(限定爬取图片数量为学号后3位)
输出信息:将下载的Url信息在控制台输出,并将下载的图片存储在images子文件中,并给出截图。
实验步骤
1.选择爬取京东网站136个书包图片
2.多线程方式爬取
(1)利用re库正则表达式获取图片url字段
(2)定义下载图片的函数
(3)启动线程,用于下载图片,并设置所有子线程结束主线程才能结束
3.单线程方式爬取
(1)与多线程爬取的差别只是没有线程的启动,将上述多线程方式爬取的(3)启动线程改为直接下载图片
4.结果查看
(1)多线程爬取
-
控制台输出url:由于输出url并没有放在多线程里,所有是按照顺序输出的
-
图片存入images文件夹
(2)单线程爬取 -
控制台输出url
-
图片存入images2文件夹
*** 实验心得**
1.京东网站采取选择性反爬取策略,同一个请求有时候能请求,有时候被拒绝,应该在第一次爬取全部信息后存入文本中,再进行爬取调试。
作业二
要求:使用scrapy框架复现作业一。
输出信息:同作业一。
实验步骤
1.由于访问被京东网站的反爬取策略拒绝得很严重,因此第二题选择换一个网站,爬取Lenovo电脑游戏本网站的前136张图片
2.各python文件的编写
(1)settings
(2)items
(3)pipeline
- 设置开启spider和关闭spider
- 根据爬取的url下载图片
(4)myspider
- 使用beautifulsoup爬取img下的src属性,得到图片的url
- 无效url和:有的img节点没有src属性值;网站中有多张相同的图片,会造成url重复。
- 不完整url分析:有的src属性值开头为//,有的为https
3.实验结果
- 输出url信息
*爬取的图片存入images中
实验心得
1.对于img标签的src属性,爬取时会遇到url不完整,url重复,或者为空等多种情况,应具体问题具体分析,仔细观察,逐一解决困难;
2.scrapy中数据采集和处理分开进行,会有数据采集太快,处理跟不上速度,处理到一半就结束的情况。
3.Scrapy的pipelines本质上是多线程处理。
实验三
要求:爬取豆瓣电影数据使用scrapy和xpath,并将内容存储到数据库,同时将图片存储在imgs路径下。
候选网站:https://movie.douban.com/top250
输出信息:
实验步骤
1.各python文件的编写
(1)settings
(2)items
(3)pipeline
-
设置开启spider,做准备工作:创建数据库和表
-
关闭spider,关闭数据库
-
根据爬取的url下载图片
-
向表中插入数据
(4)example
- 设置拼接url用来翻页:通过观察翻页url的变化,可知start参数项为每页开始的电影序号,因此每次start增加25用来翻页
- 分析网页源代码,提取需要的六个信息端
- 使用xpath获取信息,其中由于导演信息和演员信息、其他不需要的信息在一个text里面,因此先用director_actor保存
- 在director_actor的奇数项中进一步提取导演和演员的信息,由于导演和演员的个数具有不确定性,为简单起见,分别只截取其中的一个;且有的信息被"..."省略,这时当作为空来处理
2.实验结果
-
查看imgs文件
-
查看数据库信息
实验心得
1.在编写pipeline文件的数据处理时,若把数据库的缓存和关闭都放在的close_spider()函数中,会出现只向数据库中写入第一页的电影信息(即25条)、但下载了所有图片到本地的情况,原因是example文件数据爬取速度太快,数据库还没写完数据直接关闭了。解决方法是把数据库缓存函数con.commit放在process_item()函数中,把数据库关闭函数con.close放在close_spider()函数中;
2.一直存在process_item()还没执行,close_spider()函数就已经执行的情况,但是暂时还没有解决方法;
3.实验中发现爬取的信息跟网页源码不一样,要冷静分析,可能是自己看错了网页源码的位置(比如本来要看第一页,看到第二页去了,不然不可能有那么玄幻的事情发生)。
Gitee链接:https://gitee.com/jmssj/pythonProject/tree/master/第三次大作业
下一篇: 想成功率翻倍?面试前必做这5件事!
推荐阅读
-
openEuler郑州用户组成立!openEuler与hyperfusion携手共建河南地区用户生态 - 开幕致辞 超融合操作系统业务总经理、openEuler委员会成员蒋振华先生为本次活动致辞。 在本次活动的致辞中,他提到,作为openEuler社区早期的成员,超融合见证了openEuler从成立到在各行业商业落地,再到跨越生态拐点的过程,感谢openEuler提供了一个全产业链共同创新的平台,共同推动创新技术的商业落地。 同时,本次活动得到了郑州市郑东新区大数据管理局、郑州中原科技城投资服务局的大力支持。 郑东新区大数据管理局曹光远 在活动致辞中表示,openEuler的应用和*应用设施的深度优化,为郑东新区数字化转型提供了安全、可靠、高性能的技术基础;郑州中原科技城招商服务局王林表示,郑东新区欢迎所有openEuler生态相关企业扎根当地,围绕openEuler社区共同发展,形成合力。 openEuler社区及运维功能介绍 openEuler技术委员会委员胡峰 openEuler技术委员会委员胡峰先生在本次活动中介绍了openEuler社区目前发展的整体情况,并重点从技术层面介绍了openEuler的运维功能。 openEuler 晚会 胡峰先生介绍智能运维工具 A-Ops 和 openEuler gala、 阿波罗 Apollo、智能漏洞管理解决方案等新功能,以及涵盖各种运维场景的精品运维组件。在*交流环节,许多用户就目前使用的 openEuler 在*交流环节,许多用户就自己在使用openEuler过程中遇到的一些问题与胡峰先生进行了进一步的交流。 软硬结合,构建多样化算力操作系统 Hyperfusion 基于 openEuler 的基础上,结合自身软硬件技术积累,推出了富讯服务器操作系统 FusionOS FusionOS. FusionOS 首席架构师张海亮 分享了 FusionOS FusionOS首席架构师张海亮分享了FusionOS的软硬件协同优势、卓越的性能和可靠性,以及FusionOS在金融、运营商、*、互联网等行业的实践案例,引起了众多用户的兴趣,分享结束后,不少参会者就FusionOS的特点向讲师提问并进行了交流。
-
使用决策融合技术改进极限学习机的分类预测能力:针对电子鼻采集的数据
-
搞定!数据采集和融合技术的第三次作业
-
第三次作业:数据采集与融合技术的探索与实践
-
第一至第三次作业:数据采集与融合