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 相关文章推荐
Flask框架学习笔记(一)安装篇(windows安装与centos安装)
Jun 25 Python
Python的Flask框架中web表单的教程
Apr 20 Python
Python中super的用法实例
May 28 Python
Django中URLconf和include()的协同工作方法
Jul 20 Python
python WindowsError的错误代码详解
Jul 23 Python
python数据结构链表之单向链表(实例讲解)
Jul 25 Python
Python实现将json文件中向量写入Excel的方法
Mar 26 Python
python pyinstaller 加载ui路径方法
Jun 10 Python
python和js交互调用的方法
Jun 23 Python
用python进行视频剪辑
Nov 02 Python
python 实现批量图片识别并翻译
Nov 02 Python
OpenCV-Python 实现两张图片自动拼接成全景图
Jun 11 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+mysql写的简单留言本实例代码
2008/07/25 PHP
深入php处理整数函数的详解
2013/06/09 PHP
PHP自带方法验证邮箱、URL、IP是否合法的函数
2016/12/08 PHP
phpStudy配置多站点多域名和多端口的方法
2017/09/01 PHP
jQuery textarea的长度进行验证
2009/05/06 Javascript
jQuery中jqGrid分页实现代码
2011/11/04 Javascript
javascript实现div的拖动并调整大小类似qq空间个性编辑模块
2012/12/12 Javascript
JS解决url传值出现中文乱码的另类办法
2013/04/08 Javascript
基于JavaScript 数据类型之Boolean类型分析介绍
2013/04/19 Javascript
从jquery的过滤器.filter()方法想到的
2013/09/29 Javascript
让jQuery与其他JavaScript库并存避免冲突的方法
2013/12/23 Javascript
防止登录页面出现在frame中js代码
2014/07/22 Javascript
javascript结合fileReader 实现上传图片
2015/01/30 Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
2020/03/30 Javascript
js实现简洁的滑动门菜单(选项卡)效果代码
2015/09/04 Javascript
深入分析jsonp协议原理
2015/09/26 Javascript
Javascript中常用的检测方法小结
2016/10/08 Javascript
Vue 2中ref属性的使用方法及注意事项
2017/06/12 Javascript
Angular2 父子组件通信方式的示例
2018/01/29 Javascript
Koa日志中间件封装开发详解
2019/03/09 Javascript
JS实现关闭小广告特效
2021/01/29 Javascript
js实现时钟定时器
2020/03/26 Javascript
vue+iview分页组件的封装
2020/11/17 Vue.js
Python装饰器简单用法实例小结
2018/12/03 Python
python安装numpy和pandas的方法步骤
2019/05/27 Python
Python turtle库绘制菱形的3种方式小结
2019/11/23 Python
Python collections模块的使用方法
2020/10/09 Python
Python类绑定方法及非绑定方法实例解析
2020/10/09 Python
CSS3动画效果回调处理详解
2014/12/10 HTML / CSS
简单介绍Object类的功能、常用方法
2013/10/02 面试题
会计专业大学生职业生涯规划范文
2014/01/11 职场文书
物理专业大学生职业生涯规划书
2014/02/07 职场文书
机关单位人员学雷锋心得体会
2014/03/10 职场文书
学习党代会心得体会
2014/09/05 职场文书
2015年世界无烟日活动总结
2015/02/10 职场文书
2016年万圣节家长开放日活动总结
2016/04/05 职场文书