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中列表生成式的用法
Mar 31 Python
Python优化技巧之利用ctypes提高执行速度
Sep 11 Python
django模板语法学习之include示例详解
Dec 17 Python
python 将字符串完成特定的向右移动方法
Jun 11 Python
从numpy数组中取出满足条件的元素示例
Nov 26 Python
Window系统下Python如何安装OpenCV库
Mar 05 Python
Django框架models使用group by详解
Mar 11 Python
python判断一个变量是否已经设置的方法
Aug 13 Python
Pycharm中如何关掉python console
Oct 27 Python
使用python如何删除同一文件夹下相似的图片
May 07 Python
利用python进行数据加载
Jun 20 Python
Python数据处理的三个实用技巧分享
Apr 01 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中用date函数获取当前时间有误的解决办法
2013/08/02 PHP
Destoon旺旺无法正常显示,点击提示“会员名不存在”的解决办法
2014/06/21 PHP
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
2014/11/24 PHP
Zend Framework处理Json数据方法详解
2016/12/09 PHP
PHP实现可精确验证身份证号码的工具类示例
2018/05/31 PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
2018/08/15 PHP
php提取微信账单的有效信息
2018/10/01 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
input、button的不同type值在ajax提交表单时导致的陷阱
2009/02/24 Javascript
通过DOM脚本去设置样式信息
2010/09/19 Javascript
可自己添加html的伪弹出框实现代码
2013/09/08 Javascript
extjs4 treepanel动态改变行高度示例
2013/12/17 Javascript
Js+Jq获取URL参数的集中方法示例代码
2014/05/20 Javascript
AngularJS实现Model缓存的方式
2016/02/03 Javascript
原生js的数组除重复简单实例
2016/05/24 Javascript
通过jquery-ui中的sortable来实现拖拽排序的简单实例
2016/05/24 Javascript
AngularJs学习第八篇 过滤器filter创建
2016/06/08 Javascript
js获取html的span标签的值方法(超简单)
2016/07/26 Javascript
underscore之function_动力节点Java学院整理
2017/07/11 Javascript
[55:18]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python获取运行目录与当前脚本目录的方法
2015/06/01 Python
redis之django-redis的简单缓存使用
2018/06/07 Python
python os.listdir按文件存取时间顺序列出目录的实例
2018/10/21 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
2020/02/06 Python
python 制作磁力搜索工具
2021/03/04 Python
TUMI马来西亚官方网站:国际领先的高品质商旅箱包品牌
2018/04/26 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?用contains来区分是否有重复的对象。还是都不用
2013/07/30 面试题
PyQt QMainWindow的使用示例
2021/03/24 Python
小学后勤管理制度
2014/01/14 职场文书
五月的鲜花活动方案
2014/08/21 职场文书
2014教师党员自我评议总结
2014/09/19 职场文书
简易版租房协议书范本
2014/10/13 职场文书
2014年党委工作总结
2014/11/22 职场文书
个人工作保证书
2015/02/28 职场文书
golang中实现给gif、png、jpeg图片添加文字水印
2021/04/26 Golang
斗罗大陆八大特殊魂兽,龙族始祖排榜首,第五最残忍(翠魔鸟)
2022/03/18 国漫