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中操作时间之strptime()方法的使用
Dec 30 Python
详解Python开发中如何使用Hook技巧
Nov 01 Python
Python基于列表list实现的CRUD操作功能示例
Jan 05 Python
python3 打印输出字典中特定的某个key的方法示例
Jul 06 Python
Python 实现输入任意多个数,并计算其平均值的例子
Jul 16 Python
Python使用lambda表达式对字典排序操作示例
Jul 25 Python
Django 对象关系映射(ORM)源码详解
Aug 06 Python
Python datetime 格式化 明天,昨天实例
Mar 02 Python
Python itertools.product方法代码实例
Mar 27 Python
使用python创建Excel工作簿及工作表过程图解
May 27 Python
互斥锁解决 Python 中多线程共享全局变量的问题(推荐)
Sep 28 Python
pycharm进入时每次都是insert模式的解决方式
Feb 05 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
怎么使 Mysql 数据同步
2006/10/09 PHP
PHP在不同页面间传递Json数据示例代码
2013/06/08 PHP
php+Mysqli利用事务处理转账问题实例
2015/02/11 PHP
thinkphp分页实现效果
2016/10/13 PHP
phpStorm+XDebug+chrome 配置详解
2019/04/01 PHP
JavaScript入门教程(12) js对象化编程
2009/01/31 Javascript
让低版本浏览器支持input的placeholder属性(js方法)
2013/04/03 Javascript
没有document.getElementByName方法
2013/08/19 Javascript
用IE重起计算机或者关机的示例代码
2014/03/10 Javascript
AngularJS学习笔记之ng-options指令
2015/06/16 Javascript
JavaScript调用浏览器打印功能实例分析
2015/07/17 Javascript
JavaScript几种数组去掉重复值的方法推荐
2016/04/12 Javascript
简单谈谈ES6的六个小特性
2016/11/18 Javascript
javascript 中null和undefined区分和比较
2017/04/19 Javascript
详解AngularJS用Interceptors来统一处理HTTP请求和响应
2017/06/08 Javascript
vue.js移动端app实战1:初始配置详解
2017/07/24 Javascript
vue-cli常用设置总结
2018/02/24 Javascript
[38:38]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.17
2020/12/18 DOTA
python 实现归并排序算法
2012/06/05 Python
python文件和目录操作函数小结
2014/07/11 Python
学习Python selenium自动化网页抓取器
2018/01/20 Python
python 字典修改键(key)的几种方法
2018/08/10 Python
Django中使用Celery的方法示例
2018/11/29 Python
Python 3.8正式发布,来尝鲜这些新特性吧
2019/10/15 Python
Python日志logging模块功能与用法详解
2020/04/09 Python
微软新西兰官方网站:Microsoft New Zealand
2018/08/17 全球购物
美国温暖商店:The Warming Store
2018/12/15 全球购物
判断单链表中是否存在环
2012/07/16 面试题
监察建议书范文
2014/03/12 职场文书
医院合作协议书
2014/08/19 职场文书
教师学期末个人总结
2015/02/13 职场文书
医院办公室主任岗位职责
2015/04/01 职场文书
2015年财务经理工作总结
2015/05/13 职场文书
2015年社区居委会工作总结
2015/05/18 职场文书
2016年党员学习廉政准则心得体会
2016/01/20 职场文书
Go语言-为什么返回值为接口类型,却返回结构体
2021/04/24 Golang