python 静态方法_爬虫例子,Python多线程爬虫例子案例

很久没写爬虫了,一个经典的Python爬虫例子,Python多线程爬虫例子案例,目标网站结构比较简单,适合练手使用,采用了经典的生产者和消费者模式,同时结合python类和装饰器的使用,应该能够让你获益不少。

9b76edc2fd3e2fe30bff7be673d546cc.png

几个关键点:

1.python多线程 生产者与消费者模式

官方文档:

17.1. threading — 基于线程的并行

https://docs.python.org/zh-cn/3.6/library/threading.html

两个案例参考:

用Python多线程实现生产者消费者模式

https://segmentfault.com/a/1190000008909344

python-多线程3-生产者消费者

https://www.cnblogs.com/R-bear/p/7031722.html

2.@property 装饰器

既要保护类的封装特性,又要让开发者可以使用“对象.属性”的方式操作操作类属性,除了使用 property() 函数,Python 还提供了 @property 装饰器。通过 @property 装饰器,可以直接通过方法名来访问方法,不需要在方法名后添加一对“()”小括号。

参考:

http://c.biancheng.net/view/4561.html

https://www.liaoxuefeng.com/wiki/897692888725344/923030547069856

3.@staticmethod 静态方法

@staticmethod 静态方法只是名义上归属类管理,但是不能使用类变量和实例变量,是类的工具包 放在函数前(该函数不传入self或者cls),所以不能访问类属性和实例属性。

参考:

Python进阶-----静态方法(@staticmethod)

https://www.cnblogs.com/Meanwey/p/9788713.html

Python staticmethod() 函数

https://www.runoob.com/python/python-func-staticmethod.html

4.Queue 队列

queue 模块实现多生产者,多消费者队列。当信息必须安全的在多线程之间交换时,它在线程编程中是特别有用的。此模块中的 Queue 类实现了所有锁定需求的语义。

Queue.put(item, block=True, timeout=None) 将 item 放入队列。

如果可选参数 block 是 true 并且 timeout 是 None (默认),则在必要时阻塞至有空闲插槽可用。如果 timeout 是个正数,将最多阻塞 timeout 秒,如果在这段时间没有可用的空闲插槽,将引发 Full 异常。反之 (block 是 false),如果空闲插槽立即可用,则把 item 放入队列,否则引发 Full 异常 ( 在这种情况下,timeout 将被忽略)。

参考:

17.7. queue — 一个同步的队列类

https://docs.python.org/zh-cn/3.6/library/queue.html

还是推荐和尝试去阅读官方文档,慢慢理解和实践!

运行三个报错

1.Queue 队列,只能接收一个值

3c2fa3c4821d21a52bd9b5fcfdac08a7.png

2.目录文件名未格式处理,存储路径错误

5d0bd909a173ac8daa501fd62a9577e3.png

3.timeout报错

可能是图片路径存在问题,待查证!

8eb323e281135e7d8fef751dc2293939.png

运行效果

8ecc76f446940d31c68df5a514f09528.png

采集效果

ac32b14c027dacd624eac4538ec2367a.png

附源码:

#BillWang 博闻 采集
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值