QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

资深鱼友Ⅰ

Rank: 8Rank: 8Rank: 8Rank: 8

积分
1407
查看: 523|回复: 32

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

[复制链接]
最佳答案
190 
累计签到:139 天
连续签到:2 天
°蓝鲤歌蓝 发表于 2018-1-14 18:21:48 52332 | 显示全部楼层 |阅读模式
购买主题 已有 4 人购买  本主题需向作者支付 5 鱼币 才能浏览
楼层
跳转到指定楼层
最佳答案
2 
累计签到:121 天
连续签到:54 天
孤独的嫖客 发表于 2018-2-2 03:16:30 | 显示全部楼层
最近正在学习多线程   多谢分享,感激涕零,不知所言,  个人不会"BeautifulSoup4" 插件  只学习了正则表达式  辛苦了  
还是感觉注释有点少.....
最佳答案
190 
累计签到:139 天
连续签到:2 天
°蓝鲤歌蓝  楼主| 发表于 2018-2-5 10:27:55 | 显示全部楼层
孤独的嫖客 发表于 2018-2-2 03:16
最近正在学习多线程   多谢分享,感激涕零,不知所言,  个人不会"BeautifulSoup4" 插件  只学习了正则表达式  ...

谢谢你的评价,我会做进一步的改进。如果可以,欢迎你继续与我交流学习。
最佳答案
2 
累计签到:84 天
连续签到:1 天
payton24 发表于 2018-2-6 15:41:38 | 显示全部楼层
过来学习一下,谢谢分享
最佳答案
190 
累计签到:139 天
连续签到:2 天
°蓝鲤歌蓝  楼主| 发表于 2018-2-6 15:43:58 | 显示全部楼层
payton24 发表于 2018-2-6 15:41
过来学习一下,谢谢分享

不客气,谢谢支持。
最佳答案
0 
累计签到:33 天
连续签到:1 天
3140056787 发表于 2018-2-8 12:02:42 | 显示全部楼层
学习学习
最佳答案
190 
累计签到:139 天
连续签到:2 天
°蓝鲤歌蓝  楼主| 发表于 2018-2-8 12:04:51 | 显示全部楼层

欢迎欢迎
最佳答案
2 
累计签到:84 天
连续签到:1 天
payton24 发表于 2018-2-8 19:38:37 | 显示全部楼层
本帖最后由 payton24 于 2018-2-8 19:40 编辑

代码103行: t2 = getcontent(urlqueue)[code]   
多了[code],估计是插入代码时留下来的吧,
最佳答案
190 
累计签到:139 天
连续签到:2 天
°蓝鲤歌蓝  楼主| 发表于 2018-2-8 19:43:27 | 显示全部楼层
payton24 发表于 2018-2-8 19:38
代码103行: t2 = getcontent(urlqueue)[code]   
多了[code],估计是插入代码时留下来的吧, 。

谢谢提醒。
最佳答案
2 
累计签到:84 天
连续签到:1 天
payton24 发表于 2018-2-8 20:22:29 | 显示全部楼层
请问一下,多线程第26行代码:self.urlqueue.task_done()。这句话起什么作用呢?貌似没有了也不影响执行。
最佳答案
2 
累计签到:84 天
连续签到:1 天
payton24 发表于 2018-2-8 20:27:37 | 显示全部楼层

请教一下,线程1的内容直接入队,是否会更简洁一些呢?感觉没有必要为入队加一个线程。
最佳答案
190 
累计签到:139 天
连续签到:2 天
°蓝鲤歌蓝  楼主| 发表于 2018-2-8 20:33:23 | 显示全部楼层
payton24 发表于 2018-2-8 20:22
请问一下,多线程第26行代码:self.urlqueue.task_done()。这句话起什么作用呢?貌似没有了也不影响执行。

没有也没关系。
最佳答案
190 
累计签到:139 天
连续签到:2 天
°蓝鲤歌蓝  楼主| 发表于 2018-2-8 20:35:26 | 显示全部楼层
payton24 发表于 2018-2-8 20:27
请教一下,线程1的内容直接入队,是否会更简洁一些呢?感觉没有必要为入队加一个线程。

线程一不是为了入队,而是为了爬取每一页的地址而已,入队只是为了线程之间的通信。
最佳答案
2 
累计签到:84 天
连续签到:1 天
payton24 发表于 2018-2-8 23:01:43 | 显示全部楼层
°蓝鲤歌蓝 发表于 2018-2-8 20:35
线程一不是为了入队,而是为了爬取每一页的地址而已,入队只是为了线程之间的通信。

谢谢,我再琢磨消化一下。
最佳答案
190 
累计签到:139 天
连续签到:2 天
°蓝鲤歌蓝  楼主| 发表于 2018-2-8 23:07:44 | 显示全部楼层
payton24 发表于 2018-2-8 23:01
谢谢,我再琢磨消化一下。

不客气。
最佳答案
2 
累计签到:84 天
连续签到:1 天
payton24 发表于 2018-2-9 00:08:15 | 显示全部楼层

我刚才按照自己思路重写了一下多线程程序,大约2.3秒内能完成整个爬虫的抓取工作。
对于楼主的线程2,不是应该多开线程尽量节省时间才是初衷吗?否则比单线程耗时多就没啥意义了。
最佳答案
2 
累计签到:84 天
连续签到:1 天
payton24 发表于 2018-2-9 00:08:57 | 显示全部楼层
我再琢磨一下提高效率的方法
最佳答案
190 
累计签到:139 天
连续签到:2 天
°蓝鲤歌蓝  楼主| 发表于 2018-2-9 10:34:18 | 显示全部楼层
payton24 发表于 2018-2-9 00:08
我刚才按照自己思路重写了一下多线程程序,大约2.3秒内能完成整个爬虫的抓取工作。
对于楼主的线程2,不 ...

你的意思是说线程2里的那些电影数据也分线程爬取吗?我没有测试过多线程的时间,
而且我觉得有锁的原因,它不一定真的比单线程快。
还有我当时写的时候也没有说把这个程序分得多细来进行爬取,主要就是想讲一下多线程爬虫可以怎么写。
最佳答案
2 
累计签到:84 天
连续签到:1 天
payton24 发表于 2018-2-9 10:43:57 | 显示全部楼层
°蓝鲤歌蓝 发表于 2018-2-9 10:34
你的意思是说线程2里的那些电影数据也分线程爬取吗?我没有测试过多线程的时间,
而且我觉得有锁的原因 ...

是的,谢谢回复。那我晚点测试一下单线程、多线程、多进程的时间,再告诉你结果。有空的话再对比一下多协程。
最佳答案
190 
累计签到:139 天
连续签到:2 天
°蓝鲤歌蓝  楼主| 发表于 2018-2-9 10:48:18 | 显示全部楼层
payton24 发表于 2018-2-9 10:43
是的,谢谢回复。那我晚点测试一下单线程、多线程、多进程的时间,再告诉你结果。有空的话再对比一下多协 ...

不客气,你刚刚发的多线程join()用法的帖子,穷刚刚看了,也测试过,
后面2种正确方法比错误示范要快。

发表回复

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

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /1 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.1 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2018-4-20 16:24

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