鱼C论坛

 找回密码
 立即注册
查看: 8263|回复: 45

[作品展示] 多线程与多进程爬取豆瓣电影TOP250

[复制链接]
发表于 2018-1-14 18:21:48 | 显示全部楼层 |阅读模式
购买主题 已有 15 人购买  本主题需向作者支付 5 鱼币 才能浏览
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-2 03:16:30 | 显示全部楼层
最近正在学习多线程   多谢分享,感激涕零,不知所言,  个人不会"BeautifulSoup4" 插件  只学习了正则表达式  辛苦了  
还是感觉注释有点少.....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-5 10:27:55 | 显示全部楼层
孤独的嫖客 发表于 2018-2-2 03:16
最近正在学习多线程   多谢分享,感激涕零,不知所言,  个人不会"BeautifulSoup4" 插件  只学习了正则表达式  ...

谢谢你的评价,我会做进一步的改进。如果可以,欢迎你继续与我交流学习。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-6 15:41:38 | 显示全部楼层
过来学习一下,谢谢分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-6 15:43:58 | 显示全部楼层
payton24 发表于 2018-2-6 15:41
过来学习一下,谢谢分享

不客气,谢谢支持。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-8 12:02:42 | 显示全部楼层
学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-8 12:04:51 | 显示全部楼层

欢迎欢迎
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-8 19:38:37 | 显示全部楼层
本帖最后由 payton24 于 2018-2-8 19:40 编辑

代码103行: t2 = getcontent(urlqueue)[code]   
多了[code],估计是插入代码时留下来的吧,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-8 19:43:27 | 显示全部楼层
payton24 发表于 2018-2-8 19:38
代码103行: t2 = getcontent(urlqueue)[code]   
多了[code],估计是插入代码时留下来的吧, 。

谢谢提醒。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-8 20:22:29 | 显示全部楼层
请问一下,多线程第26行代码:self.urlqueue.task_done()。这句话起什么作用呢?貌似没有了也不影响执行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-8 20:27:37 | 显示全部楼层

请教一下,线程1的内容直接入队,是否会更简洁一些呢?感觉没有必要为入队加一个线程。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-8 20:33:23 | 显示全部楼层
payton24 发表于 2018-2-8 20:22
请问一下,多线程第26行代码:self.urlqueue.task_done()。这句话起什么作用呢?貌似没有了也不影响执行。

没有也没关系。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-8 20:35:26 | 显示全部楼层
payton24 发表于 2018-2-8 20:27
请教一下,线程1的内容直接入队,是否会更简洁一些呢?感觉没有必要为入队加一个线程。

线程一不是为了入队,而是为了爬取每一页的地址而已,入队只是为了线程之间的通信。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-8 23:01:43 | 显示全部楼层
°蓝鲤歌蓝 发表于 2018-2-8 20:35
线程一不是为了入队,而是为了爬取每一页的地址而已,入队只是为了线程之间的通信。

谢谢,我再琢磨消化一下。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-8 23:07:44 | 显示全部楼层
payton24 发表于 2018-2-8 23:01
谢谢,我再琢磨消化一下。

不客气。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-9 00:08:15 | 显示全部楼层

我刚才按照自己思路重写了一下多线程程序,大约2.3秒内能完成整个爬虫的抓取工作。
对于楼主的线程2,不是应该多开线程尽量节省时间才是初衷吗?否则比单线程耗时多就没啥意义了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-9 00:08:57 | 显示全部楼层
我再琢磨一下提高效率的方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-9 10:34:18 | 显示全部楼层
payton24 发表于 2018-2-9 00:08
我刚才按照自己思路重写了一下多线程程序,大约2.3秒内能完成整个爬虫的抓取工作。
对于楼主的线程2,不 ...

你的意思是说线程2里的那些电影数据也分线程爬取吗?我没有测试过多线程的时间,
而且我觉得有锁的原因,它不一定真的比单线程快。
还有我当时写的时候也没有说把这个程序分得多细来进行爬取,主要就是想讲一下多线程爬虫可以怎么写。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-9 10:43:57 | 显示全部楼层
°蓝鲤歌蓝 发表于 2018-2-9 10:34
你的意思是说线程2里的那些电影数据也分线程爬取吗?我没有测试过多线程的时间,
而且我觉得有锁的原因 ...

是的,谢谢回复。那我晚点测试一下单线程、多线程、多进程的时间,再告诉你结果。有空的话再对比一下多协程。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-9 10:48:18 | 显示全部楼层
payton24 发表于 2018-2-9 10:43
是的,谢谢回复。那我晚点测试一下单线程、多线程、多进程的时间,再告诉你结果。有空的话再对比一下多协 ...

不客气,你刚刚发的多线程join()用法的帖子,穷刚刚看了,也测试过,
后面2种正确方法比错误示范要快。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 15:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表