python爬虫中的url下载器用法详解


Posted in Python onNovember 30, 2020

前期的入库筛选工作已经由url管理器完成了,整理的工作自然要由url下载器接手。当我们需要爬取的数据已经去重后,下载器的主要任务的是这些数据下载下来。所以它的使用也并不复杂,不过需要借助到我们之前所学过的一个库进行操作,相信之前的基础大家都学的很牢固。下面小编就来为大家介绍url下载器及其使用的方法。

下载器的作用就是接受URL管理器传递给它的一个url,然后把该网页的内容下载下来。python自带有urllib和urllib2等库(这两个库在python3中合并为urllib),它们的作用就是获取指定的网页内容。不过,在这里我们要使用一个更加简洁好用而且功能更加强大的模块:Requests。

Requests并非python自带模块,需要安装。关于其具体使用方法请查看以往文章,在此不多做介绍。

下载器接受一个url作为参数,返回值为下载到的网页内容(格式为str)。下面就是一个简单的下载器,其中只有一个简单的函数download():

'''
-----------------------------------------------------------------
HtmlDownloader
'''
class HtmlDownloader(object):
  def download(self, url):
    print "start download"
    if url is None:
      return None
      print "url is None"
    user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36'
    headers = {'User-Agent':user_agent}
    print "start requests"
    r = requests.get(url, headers=headers)
    #判断响应状态
    if r.status_code == 200:
      r.encoding = 'utf-8'
      print "该页面下载成功!{}".format(url)
      return r.text
    else:
      print "该页面下载失败!{}".format(url)
    return None

在requests请求中设置User-Agent的目的是伪装成浏览器,这是一只优秀的爬虫应该有的觉悟。

有些小伙伴已经猜出来了,requests库和我们的爬取数据密不可分,搭配着url下载器我们就可以成功抓取想要的数据了

知识点扩展:

url下载器

  • URL下载器应该包含两个仓库,分别存放没有爬取过的链接和已经爬取过的链接。
  • 应该有一些函数负责往上述两个仓库里添加链接
  • 应该有一个函数负责从新url仓库中随机取出一条链接以便下载器爬取
  • URL下载器应该能识别重复的链接,已经爬取过的链接就不需要放进仓库了

到此这篇关于python爬虫中的url下载器用法详解的文章就介绍到这了,更多相关python爬虫中的url下载器是什么内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
用python结合jieba和wordcloud实现词云效果
Sep 05 Python
python基础学习之如何对元组各个元素进行命名详解
Jul 12 Python
Python爬虫PyQuery库基本用法入门教程
Aug 04 Python
python采集微信公众号文章
Dec 20 Python
Python数据预处理之数据规范化(归一化)示例
Jan 08 Python
Python进程间通信Queue消息队列用法分析
May 22 Python
Python计算一个点到所有点的欧式距离实现方法
Jul 04 Python
在django中实现页面倒数几秒后自动跳转的例子
Aug 16 Python
Python实现名片管理系统
Feb 14 Python
使用celery和Django处理异步任务的流程分析
Feb 19 Python
python2和python3哪个使用率高
Jun 23 Python
Python hashlib和hmac模块使用方法解析
Dec 08 Python
Python接口自动化测试框架运行原理及流程
Nov 30 #Python
Django数据模型中on_delete使用详解
Nov 30 #Python
Django数据统计功能count()的使用
Nov 30 #Python
Python常用断言函数实例汇总
Nov 30 #Python
在pycharm中使用pipenv创建虚拟环境和安装django的详细教程
Nov 30 #Python
Django 用户认证Auth组件的使用
Nov 30 #Python
python tqdm库的使用
Nov 30 #Python
You might like
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
2019/06/03 PHP
laravel框架添加数据,显示数据,返回成功值的方法
2019/10/11 PHP
JavaScript语法着色引擎(demo及打包文件下载)
2007/06/13 Javascript
jquery tab插件精简版分享
2011/09/10 Javascript
js获取dom的高度和宽度(可见区域及部分等等)
2013/06/13 Javascript
jQuery中siblings()方法用法实例
2015/01/08 Javascript
JavaScript中textRange对象使用方法小结
2015/03/24 Javascript
JavaScript获取当前网页标题(title)的方法
2015/04/03 Javascript
javascript实现的淘宝旅行通用日历组件用法实例
2015/08/03 Javascript
详解JavaScript的内置对象
2016/12/07 Javascript
jquery实现回车键触发事件(实例讲解)
2017/11/21 jQuery
VUE table表格动态添加一列数据,新增的这些数据不可以编辑(v-model绑定的数据不能实时更新)
2020/04/03 Javascript
jQuery--遍历操作实例小结【后代、同胞及过滤】
2020/05/22 jQuery
对于Python装饰器使用的一些建议
2015/06/03 Python
Python读取mat文件,并转为csv文件的实例
2018/07/04 Python
利用Python将数值型特征进行离散化操作的方法
2018/11/06 Python
Python3+Pycharm+PyQt5环境搭建步骤图文详解
2019/05/29 Python
Python利用matplotlib做图中图及次坐标轴的实例
2019/07/08 Python
python实现京东订单推送到测试环境,提供便利操作示例
2019/08/09 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
2019/08/24 Python
Django 批量插入数据的实现方法
2020/01/12 Python
django自带的权限管理Permission用法说明
2020/05/13 Python
如何利用pycharm进行代码更新比较
2020/11/04 Python
大学生2014全国两会学习心得体会
2014/03/10 职场文书
二手房购房意向书范本
2014/04/01 职场文书
集中采购方案
2014/06/10 职场文书
2015年社区矫正工作总结
2015/04/21 职场文书
单位工作证明范本
2015/06/15 职场文书
趣味运动会广播稿
2015/08/19 职场文书
正能量励志演讲稿三分钟(范文)
2019/07/11 职场文书
解决xampp安装后Apache无法启动
2022/03/21 Servers
python使用opencv对图像添加噪声(高斯/椒盐/泊松/斑点)
2022/04/06 Python
Python matplotlib绘制雷达图
2022/04/13 Python
nginx容器方式反向代理实战
2022/04/18 Servers
MySQL 数据库范式化设计理论
2022/04/22 MySQL
Redis高并发缓存架构性能优化
2022/05/15 Redis