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实现把utf-8格式的文件转换成gbk格式的文件
Jan 22 Python
python实现微信跳一跳辅助工具步骤详解
Jan 04 Python
TensorFlow高效读取数据的方法示例
Feb 06 Python
浅谈python配置与使用OpenCV踩的一些坑
Apr 02 Python
通过PYTHON来实现图像分割详解
Jun 26 Python
Python Django基础二之URL路由系统
Jul 18 Python
快速解决vue.js 模板和jinja 模板冲突的问题
Jul 26 Python
Python迷宫生成和迷宫破解算法实例
Dec 24 Python
Pytorch 实现sobel算子的卷积操作详解
Jan 10 Python
python爬虫基础知识点整理
Jun 02 Python
python如何爬取动态网站
Sep 09 Python
python绘制汉诺塔
Mar 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 计算代码执行耗时的代码修正网上普遍错误
2011/05/14 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
谷歌浏览器 insertCell与appendChild的区别
2009/02/12 Javascript
用jquery ajax获取网站Alexa排名的代码
2009/12/12 Javascript
深入了解Node.js中的一些特性
2014/09/25 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
2014/12/05 Javascript
javascript 动态创建表格
2015/01/08 Javascript
浅谈window.onbeforeunload() 事件调用ajax
2016/06/29 Javascript
vue.js+boostrap项目实践(案例详解)
2016/09/21 Javascript
JS中正则表达式全局匹配模式 /g用法详解
2017/04/01 Javascript
浅谈JavaScript的innerWidth与innerHeight
2017/10/12 Javascript
详述 Sublime Text 打开 GBK 格式中文乱码的解决方法
2017/10/26 Javascript
垃圾回收器的相关知识点总结
2018/05/13 Javascript
JS 实现分页打印功能
2018/05/16 Javascript
vue使用Google地图的实现示例代码
2018/12/19 Javascript
微信小程序开发摇一摇功能
2019/11/22 Javascript
jquery使用echarts实现有向图可视化功能示例
2019/11/25 jQuery
bootstrapValidator表单校验、更改状态、新增、移除校验字段的实例代码
2020/05/19 Javascript
python网络编程之TCP通信实例和socketserver框架使用例子
2014/04/25 Python
解读Python编程中的命名空间与作用域
2015/10/16 Python
利用Hyperic调用Python实现进程守护
2018/01/02 Python
Pandas读取并修改excel的示例代码
2019/02/17 Python
利用python-pypcap抓取带VLAN标签的数据包方法
2019/07/23 Python
Python列表(list)所有元素的同一操作解析
2019/08/01 Python
python 魔法函数实例及解析
2019/09/25 Python
Python面向对象之多态原理与用法案例分析
2019/12/30 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
2020/04/17 Python
Python虚拟环境的创建和包下载过程分析
2020/06/19 Python
Django基于Models定制Admin后台实现过程解析
2020/11/11 Python
canvas 如何绘制线段的实现方法
2018/07/12 HTML / CSS
某公司的.net工程师面试题笔试题
2013/11/22 面试题
教师党员思想汇报
2014/01/06 职场文书
2014年党员个人剖析材料
2014/10/08 职场文书
Python中X[:,0]和X[:,1]的用法
2021/05/10 Python
试了下Golang实现try catch的方法
2021/07/01 Golang
Kubernetes控制节点的部署
2022/04/01 Servers