1 # 使用requests请求网页,爬取网页的内容
 2
 3 # 模拟使用进程池模拟多进程爬取网页获取数据,使用进程绑定的回调函数去处理数据
 4
 5 import requests
 6 from multiprocessing import Pool
 7
 8 # response = requests.get('http://www.baidu.com') # 访问网页获取网页内容,得到一个网页内容的结果对象<Response [200]>这个200是一个状态码,200表示网页正常的返回,404表示网页找不到
 9 #
10 # print(response)
11 # print(response.status_code) # 获取访问网页返回的状态码,200表示网页正常返回,404表示网页找不到。这里是200
12 # 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类型的,所以这里解码成了str
24
25 def call_back(args):
26     '''
27     回调函数,接收获取get_url的返回值,处理获取到的网页数据
28     :param args: 参数不能是多个,所以想获取到多个参数,这里可以是元组的形式.接收的是get_url的返回值
29     :return:
30     '''
31     url, content = args
32     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

使用进程池模拟多进程爬取url获取数据,使用进程绑定的回调函数去处理数据...相关推荐

  1. 使用Xpath+多进程爬取诗词名句网的史书典籍类所有文章。update~

    上次写了爬取这个网站的程序,有一些地方不完善,而且爬取速度较慢,今天完善一下并开启多进程爬取,速度就像坐火箭.. # 需要的库 from lxml import etree import reques ...

  2. python+BeautifulSoup+多进程爬取糗事百科图片

    用到的库: import requests import os from bs4 import BeautifulSoup import time from multiprocessing impor ...

  3. 第26讲:模拟登录爬取实战案例

    在上一课时我们了解了网站登录验证和模拟登录的基本原理.网站登录验证主要有两种实现,一种是基于 Session + Cookies 的登录验证,另一种是基于 JWT 的登录验证,那么本课时我们就通过两个 ...

  4. 2021春项目需求记录 python实现模拟登录+爬取NASA Modis 上的产品数据

    python实现模拟登录+爬取Nasa Modis 上的产品数据 概述 需求分析 基本思路 代码 概述 3月的中旬时候参与了学校的一个大创项目,作为本科生,本人只是摸鱼打杂,负责了其中的一个功能模块: ...

  5. python + selenium多进程爬取淘宝搜索页数据

    python + selenium多进程爬取淘宝搜索页数据 1. 功能描述 按照给定的关键词,在淘宝搜索对应的产品,然后爬取搜索结果中产品的信息,包括:标题,价格,销量,产地等信息,存入mongodb ...

  6. python+正则+多进程爬取糗事百科图片

    话不多说,直接上代码: # 需要的库 import requests import re import os from multiprocessing import Pool # 请求头 header ...

  7. Python 爬虫实战,模拟登陆爬取数据

    Python 爬虫实战,模拟登陆爬取数据 从0记录爬取某网站上的资源连接: 模拟登陆 爬取数据 保存到本地 结果演示: 源网站展示: 爬到的本地文件展示: 环境准备: python环境安装 略 安装r ...

  8. scrapy模拟浏览器爬取51job(动态渲染页面爬取)

    scrapy模拟浏览器爬取51job 51job链接 网络爬虫时,网页不止有静态页面还有动态页面,动态页面主要由JavaScript动态渲染,网络爬虫经常遇见爬取JavaScript动态渲染的页面. ...

  9. 多进程爬取豆瓣电影前100,将数据导出为Excel表

    之前学习爬虫时,自己尝试写代码爬取的爬取豆瓣前100的电影,现在发表出来便于自己回顾知识点,该代码爬取速度还是非常快的,但是就是因为设置多进程爬取后爬取时间过快,如果不设置随机时间,没有代理IP,爬取 ...

最新文章

  1. 编程之美:无差错二分查找
  2. Xcode bug: imageNamed:方法返回nil
  3. 系统架构设计理论与原则
  4. 21天学通python pdf-21天学通Python PDF百度网盘资源下载
  5. HDU 1879(最小生成树问题,Prim)
  6. 汇编语言 字母的大小写转换
  7. java二叉树 最大值_leetcode刷题笔记-654. 最大二叉树(java实现)
  8. Linux系统开机启动过程分析
  9. C++泛型编程实现二叉搜索树BST
  10. Broker模块划分
  11. 【云速建站】按照给定模板从0开始编辑网站页面
  12. Map-Reduce原理
  13. 2019西电网安实验班选拔考试
  14. 啊哈算法——第一章第二节:冒泡排序
  15. 判断粗大误差的matlab程序,粗大误差处理程序
  16. 微星主板前面板耳机插孔无声音输出问题【已解决】
  17. AE渲染加快速度,解决导出视频太慢的问题
  18. h2o java,H2O AutoML入门开发简介
  19. open-falcon短信报警
  20. python3 判断素数

热门文章

  1. jquery中this与$(this)的用法区别.
  2. 【创新培育项目】为什么要组队參加比赛?及如何寻找一个合适的选题?
  3. 心累了,就笑一笑,学会爱自己
  4. SQL系列ROLLUP关键字
  5. 使用Java基于数据流直接抽取word文本
  6. 【转】摄像头编程实例
  7. VS 2005 Debugger crashing with IE 8
  8. webpack+vue实践
  9. RHEL6.3配置Apache服务器(2) 构建虚拟主机
  10. easyui-datagrid行数据field原样输出html标签