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查看多台服务器进程的脚本分享
Jun 11 Python
Flask框架URL管理操作示例【基于@app.route】
Jul 23 Python
Python分割指定页数的pdf文件方法
Oct 26 Python
详解python中list的使用
Mar 15 Python
Python 使用list和tuple+条件判断详解
Jul 30 Python
基于Django的乐观锁与悲观锁解决订单并发问题详解
Jul 31 Python
python base64库给用户名或密码加密的流程
Jan 02 Python
python应用Axes3D绘图(批量梯度下降算法)
Mar 25 Python
Python字典实现伪切片功能
Oct 28 Python
解决pycharm不能自动保存在远程linux中的问题
Feb 06 Python
一文搞懂Python Sklearn库使用
Aug 23 Python
Python如何使用循环结构和分支结构
Apr 13 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
function.inc.php超越php
2006/12/09 PHP
关于crontab的使用详解
2013/06/24 PHP
那些年我们错过的魔术方法(Magic Methods)
2014/01/14 PHP
PHP时间戳格式全部汇总 (获取时间、时间戳)
2016/06/13 PHP
JavaScript 封装Ajax传递的数据代码
2009/06/05 Javascript
AJAX使用了UpdatePanel后无法使用alert弹出脚本
2010/04/02 Javascript
用js解决数字不能换行问题
2010/08/10 Javascript
js实现简单的星级选择器提交效果适用于评论等
2013/10/18 Javascript
js限制checkbox选中个数以限制六个为例
2014/07/15 Javascript
Flexigrid在IE下不显示数据的有效处理方法
2014/09/04 Javascript
JavaScript的String字符串对象常用操作总结
2016/05/26 Javascript
javascript时间差插件分享
2016/07/18 Javascript
JS使用正则表达式过滤多个词语并替换为相同长度星号的方法
2016/08/03 Javascript
修改Jquery Dialog 位置的实现方法
2016/08/26 Javascript
vue货币过滤器的实现方法
2017/04/01 Javascript
JavaScript实现的原生态兼容IE6可调可控滚动文字功能详解
2017/09/19 Javascript
微信小程序登录换取token的教程
2018/05/31 Javascript
微信小程序自定义弹窗wcPop插件
2018/11/19 Javascript
微信小程序使用setData修改数组中单个对象的方法分析
2018/12/30 Javascript
3分钟了解vue数据劫持的原理实现
2019/05/01 Javascript
Vue 处理表单input单行文本框的实例代码
2019/05/09 Javascript
vue 导航菜单刷新状态不消失,显示对应的路由界面操作
2020/08/06 Javascript
[49:43]VG vs FNATIC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python中的字典遍历备忘
2015/01/17 Python
使用python实现省市三级菜单效果
2016/01/20 Python
Python中安装easy_install的方法
2018/11/18 Python
PyQt5 QTableView设置某一列不可编辑的方法
2019/06/25 Python
Python中新式类与经典类的区别详析
2019/07/10 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
2020/05/22 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
2020/10/15 Python
python使用yaml 管理selenium元素的示例
2020/12/01 Python
Under Armour安德玛荷兰官网:美国高端运动科技品牌
2019/07/10 全球购物
德国玩具商店:Planet Happy DE
2021/01/16 全球购物
股东出资证明书(正规版)
2014/09/24 职场文书
经理岗位职责
2015/02/02 职场文书