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入门教程
Feb 08 Python
Python urlopen()函数 示例分享
Jun 12 Python
python3 shelve模块的详解
Jul 08 Python
python实现报表自动化详解
Nov 16 Python
python之virtualenv的简单使用方法(必看篇)
Nov 25 Python
对numpy中shape的深入理解
Jun 15 Python
python range()函数取反序遍历sequence的方法
Jun 25 Python
基于Python实现定时自动给微信好友发送天气预报
Oct 25 Python
Python 实现取矩阵的部分列,保存为一个新的矩阵方法
Nov 14 Python
python文件和文件夹复制函数
Feb 07 Python
解决python对齐错误的方法
Jul 16 Python
解决Pytorch修改预训练模型时遇到key不匹配的情况
Jun 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
PHP下通过file_get_contents的代理使用方法
2011/02/16 PHP
smarty实现多级分类的方法
2014/12/05 PHP
PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题
2015/11/30 PHP
stripos函数知识点实例分享
2019/02/11 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
JavaScript实现禁止后退的方法
2006/12/27 Javascript
javascript while语句和do while语句的区别分析
2007/12/08 Javascript
浅析Javascript使用include/require
2013/11/13 Javascript
Javascript中浮点数相乘的一个解决方法
2014/06/03 Javascript
window.location 对象所包含的属性
2014/10/10 Javascript
javascript实现粘贴qq截图功能(clipboardData)
2016/05/29 Javascript
使用JQuery选择HTML遍历函数的方法
2016/09/17 Javascript
javascript的函数劫持浅析
2016/09/26 Javascript
javascript入门之数组[新手必看]
2016/11/21 Javascript
Angularjs的启动过程分析
2017/07/18 Javascript
JS实现的邮箱提示补全效果示例
2018/01/30 Javascript
使用veloticy-ui生成文字动画效果
2018/02/08 Javascript
Js 利用正则表达式和replace函数获取string中所有被匹配到的文本(推荐)
2018/10/28 Javascript
微信小程序自定义组件传值 页面和组件相互传数据操作示例
2019/05/05 Javascript
javascript操作元素的常见方法小结
2019/11/13 Javascript
使用原生JS实现火锅点餐小程序(面向对象思想)
2019/12/10 Javascript
前端 javascript 实现文件下载的示例
2020/11/24 Javascript
[02:03]《现实生活中的DOTA2》—林书豪&DOTA2职业选手出演短片
2015/08/18 DOTA
python实现飞机大战
2018/09/11 Python
解决python中 f.write写入中文出错的问题
2018/10/31 Python
对Python中for复合语句的使用示例讲解
2018/11/01 Python
Python进程池Pool应用实例分析
2019/11/27 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
2019/11/29 Python
python logging通过json文件配置的步骤
2020/04/27 Python
DHC美国官网:日本通信销售第一的化妆品品牌
2017/11/12 全球购物
Bata印度官网:源自欧洲舒适鞋履品牌
2020/01/30 全球购物
师德师风承诺书
2014/05/23 职场文书
企业党建工作汇报材料
2014/08/19 职场文书
党员承诺书范文2015
2015/04/27 职场文书
MySQL系列之六 用户与授权
2021/07/02 MySQL
mysql的Buffer Pool存储及原理
2022/04/02 MySQL