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 相关文章推荐
在Ubuntu系统下安装使用Python的GUI工具wxPython
Feb 18 Python
Python 爬虫学习笔记之多线程爬虫
Sep 21 Python
python 捕获shell脚本的输出结果实例
Jan 04 Python
python正则表达式面试题解答
Apr 28 Python
python3学习之Splash的安装与实例教程
Jul 09 Python
基于Tensorflow高阶读写教程
Feb 10 Python
Python threading.local代码实例及原理解析
Mar 16 Python
iPython pylab模式启动方式
Apr 24 Python
基于Python3读写INI配置文件过程解析
Jul 23 Python
Python3如何使用range函数替代xrange函数
Oct 05 Python
python中pdb模块实例用法
Jan 15 Python
Python初识逻辑与if语句及用法大全
Aug 07 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 api函数实现数组的交换排序示例
2014/04/13 PHP
php+javascript实现的动态显示服务器运行程序进度条功能示例
2017/08/07 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
Yii框架Session与Cookie使用方法示例
2019/10/14 PHP
AJAX的跨域与JSONP(为文章自动添加短址的功能)
2010/01/17 Javascript
input的focus方法使用
2010/03/13 Javascript
jquery 弹出层注册页面等(asp.net后台)
2010/06/17 Javascript
jquery垂直公告滚动实现代码
2013/12/08 Javascript
js中opener与parent的区别详细解析
2014/01/14 Javascript
localStorage的黑科技-js和css缓存机制
2017/02/06 Javascript
JavaScript中transform实现数字翻页效果
2017/03/08 Javascript
Vue.js实现的计算器功能完整示例
2018/07/11 Javascript
vue中Element-ui 输入银行账号每四位加一个空格的实现代码
2018/09/14 Javascript
axios取消请求的实践记录分享
2018/09/26 Javascript
JavaScript检查数据中是否存在相同的元素(两种方法)
2018/10/07 Javascript
微信运维交互机器人的示例代码
2018/11/12 Javascript
微信小程序模板template简单用法示例
2018/12/04 Javascript
jQuery 动态粒子效果示例代码
2020/07/07 jQuery
[01:05:30]VP vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python查找指定具有相同内容文件的方法
2015/06/28 Python
基于Python pip用国内镜像下载的方法
2018/06/12 Python
python多行字符串拼接使用小括号的方法
2020/03/19 Python
Python字典中的键映射多个值的方法(列表或者集合)
2018/10/17 Python
Python使用sqlalchemy模块连接数据库操作示例
2019/03/13 Python
python实现将中文日期转换为数字日期
2020/07/14 Python
socket.io 和canvas 实现的共享画板功能
2019/05/22 HTML / CSS
HTML5所有标签汇总及标签意义解释
2015/03/12 HTML / CSS
英国手工布艺沙发在线购买:Sofas & Stuff
2018/03/02 全球购物
菲律宾优惠券网站:MetroDeal
2019/04/12 全球购物
存储过程和函数的区别
2013/05/28 面试题
自荐信要包含哪些内容
2013/11/06 职场文书
2014年结对帮扶工作总结
2014/12/17 职场文书
中国世界遗产导游词
2015/02/13 职场文书
辩论赛主持人开场白
2015/05/29 职场文书
python周期任务调度工具Schedule使用详解
2021/11/23 Python
java实现web实时消息推送的七种方案
2022/07/23 Java/Android