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 yield使用方法示例
Dec 04 Python
用Python的Django框架完成视频处理任务的教程
Apr 02 Python
python通过邮件服务器端口发送邮件的方法
Apr 30 Python
深入理解Python中各种方法的运作原理
Jun 15 Python
详解Python操作RabbitMQ服务器消息队列的远程结果返回
Jun 30 Python
一篇文章读懂Python赋值与拷贝
Apr 19 Python
python读取文件名称生成list的方法
Apr 27 Python
查看Django和flask版本的方法
May 14 Python
Python切片索引用法示例
May 15 Python
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
Feb 12 Python
浅谈Python_Openpyxl使用(最全总结)
Sep 05 Python
Python headers请求头如何实现快速添加
Nov 03 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 数组的指针操作实现代码
2011/02/08 PHP
php eval函数用法总结
2012/10/31 PHP
php格式化日期和时间格式化示例分享
2014/02/24 PHP
神盾加密解密教程(一)PHP变量可用字符
2014/05/28 PHP
PHP数组去重比较快的实现方式
2016/01/19 PHP
因str_replace导致的注入问题总结
2019/08/08 PHP
jQuery中setTimeout的几种使用方法小结
2013/04/07 Javascript
jquery中子元素和后代元素的区别示例介绍
2014/04/02 Javascript
jQuery模仿阿里云购买服务器选择购买时间长度的代码
2016/04/29 Javascript
快速解决js开发下拉框中blur与click冲突
2016/10/10 Javascript
微信小程序  自定义创建详细介绍
2016/10/27 Javascript
jQuery实现别踩白块儿网页版小游戏
2017/01/18 Javascript
详解Vue.js入门环境搭建
2017/03/17 Javascript
discuz表情的JS提取方法分析
2017/03/22 Javascript
深入理解vue.js中的v-if和v-show
2017/06/22 Javascript
实例讲解javascript实现异步图片上传方法
2017/12/05 Javascript
vue页面切换到滚动页面显示顶部的实例
2018/03/13 Javascript
webpack源码之loader机制详解
2018/04/06 Javascript
JavaScript的垃圾回收机制与内存管理
2020/08/06 Javascript
[03:49]2016完美“圣”典风云人物:AMS专访
2016/12/06 DOTA
10个易被忽视但应掌握的Python基本用法
2015/04/01 Python
shell命令行,一键创建 python 模板文件脚本方法
2018/03/20 Python
python遍历文件夹找出文件夹后缀为py的文件方法
2018/10/21 Python
python 数据类型强制转换的总结
2021/01/25 Python
python3定位并识别图片验证码实现自动登录功能
2021/01/29 Python
关于canvas.toDataURL 在iOS运行失败的问题解决
2020/09/16 HTML / CSS
The Hut德国站点:时装、家居用品、美容等
2016/09/23 全球购物
《小蝌蚪找妈妈》教学反思
2014/02/21 职场文书
办理信用卡收入证明范例
2014/09/13 职场文书
合同和协议有什么区别?
2014/10/08 职场文书
2015年中秋节演讲稿
2015/03/20 职场文书
2015年反洗钱工作总结
2015/04/25 职场文书
2015年基层党支部工作总结
2015/05/21 职场文书
鸦片战争观后感
2015/06/09 职场文书
Java实现学生管理系统(IO版)
2022/02/24 Java/Android
Python实现仓库管理系统
2022/05/30 Python