博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用进程池模拟多进程爬取url获取数据,使用进程绑定的回调函数去处理数据...
阅读量:6270 次
发布时间:2019-06-22

本文共 1444 字,大约阅读时间需要 4 分钟。

1 # 使用requests请求网页,爬取网页的内容 2  3 # 模拟使用进程池模拟多进程爬取网页获取数据,使用进程绑定的回调函数去处理数据 4  5 import requests 6 from multiprocessing import Pool 7  8 # response = requests.get('http://www.baidu.com') # 访问网页获取网页内容,得到一个网页内容的结果对象
这个200是一个状态码,200表示网页正常的返回,404表示网页找不到 9 #10 # print(response)11 # print(response.status_code) # 获取访问网页返回的状态码,200表示网页正常返回,404表示网页找不到。这里是20012 # print(response.__dict__)13 # print(response.content) # 获取网页源码14 15 def get_url(url):16 '''17 爬取url、将url和url的源码返回18 :param url:19 :return:20 '''21 response = requests.get(url)22 if response.status_code == 200: # 200表示网页成功返回了,成功访问了网页23 return url, response.content.decode('utf-8') # 将网页的源码获取到,因为源码是bytes类型的,所以这里解码成了str24 25 def call_back(args):26 '''27 回调函数,接收获取get_url的返回值,处理获取到的网页数据28 :param args: 参数不能是多个,所以想获取到多个参数,这里可以是元组的形式.接收的是get_url的返回值29 :return:30 '''31 url, content = args32 print(url, len(content))33 34 if __name__ == '__main__':35 url_lst = [36 'https://www.cnblogs.com',37 'http://www.baidu.com',38 'https://www.sogou.com',39 'http://www.sohu.com'40 ]41 pool = Pool(4)42 for url in url_lst:43 pool.apply_async(get_url, args=(url, ), callback=call_back)44 pool.close()45 pool.join()

 

  回调函数:一般应用在进程的任务有延时,而要处理的数据时间的很短时,将进程的任务和回调函数绑定起来,将任务获取到的数据返回给回调函数,由回调函数处理数据,回调函数是在主进程中得以执行的

转载于:https://www.cnblogs.com/whylinux/p/9839338.html

你可能感兴趣的文章
App 卸载记录
查看>>
南京大学周志华教授当选欧洲科学院外籍院士
查看>>
计算机网络与Internet应用
查看>>
Django 文件下载功能
查看>>
走红日本 阿里云如何能够赢得海外荣耀
查看>>
磁盘空间满引起的mysql启动失败:ERROR! MySQL server PID file could not be found!
查看>>
点播转码相关常见问题及排查方式
查看>>
[arm驱动]linux设备地址映射到用户空间
查看>>
弗洛伊德算法
查看>>
【算法之美】求解两个有序数组的中位数 — leetcode 4. Median of Two Sorted Arrays
查看>>
精度 Precision
查看>>
Android——4.2 - 3G移植之路之 APN (五)
查看>>
Linux_DHCP服务搭建
查看>>
[SilverLight]DataGrid实现批量输入(like Excel)(补充)
查看>>
秋式广告杀手:广告拦截原理与杀手组织
查看>>
翻译 | 摆脱浏览器限制的JavaScript
查看>>
闲扯下午引爆乌云社区“盗窃”乌云币事件
查看>>
02@在类的头文件中尽量少引入其他头文件
查看>>
JAVA IO BIO NIO AIO
查看>>
input checkbox 复选框大小修改
查看>>