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编写的com组件发生R6034错误的原因与解决办法
Apr 01 Python
Python读取键盘输入的2种方法
Jun 16 Python
Python的Django框架中使用SQLAlchemy操作数据库的教程
Jun 02 Python
用virtualenv建立多个Python独立虚拟开发环境
Jul 06 Python
Python RabbitMQ消息队列实现rpc
May 30 Python
详解python中的装饰器
Jul 10 Python
解决Pytorch 训练与测试时爆显存(out of memory)的问题
Aug 20 Python
pytorch之ImageFolder使用详解
Jan 06 Python
python设置环境变量的作用整理
Feb 17 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
Jun 12 Python
python如何实现读取并显示图片(不需要图形界面)
Jul 08 Python
python文件排序的方法总结
Sep 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
php curl 登录163邮箱并抓取邮箱好友列表的代码(经测试)
2011/04/07 PHP
PHP5中Cookie与 Session使用详解
2013/04/30 PHP
用php制作简单分页(从数据库读取记录)的方法详解
2013/05/04 PHP
使用PHP和JavaScript判断请求是否来自微信内浏览器
2015/08/18 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
javascript中xml操作实现代码
2011/11/21 Javascript
jquery实现滑动图片自己测试的例子
2013/11/05 Javascript
js对字符的验证方法汇总
2015/02/04 Javascript
javascript中函数作为参数调用的方法
2015/02/09 Javascript
基于jquery实现图片上传本地预览功能
2016/01/08 Javascript
jQuery实现微信长按识别二维码功能
2016/08/26 Javascript
很棒的vue弹窗组件
2017/05/24 Javascript
Node.js 8 中的 util.promisify的详解
2017/06/12 Javascript
Vue源码解析之数组变异的实现
2018/12/04 Javascript
vue给对象动态添加属性和值的实例
2019/09/09 Javascript
Vue混入mixins滚动触底的方法
2019/11/22 Javascript
vue element-ui实现动态面包屑导航
2019/12/23 Javascript
vue中实现拖动调整左右两侧div的宽度的示例代码
2020/07/22 Javascript
Vue+Element UI 树形控件整合下拉功能菜单(tree + dropdown +input)
2020/08/28 Javascript
[01:30]2016国际邀请赛中国区预选赛神秘商店火爆开启
2016/06/26 DOTA
在Python中操作时间之strptime()方法的使用
2020/12/30 Python
Python字符串拼接的几种方法整理
2017/08/02 Python
基于DataFrame改变列类型的方法
2018/07/25 Python
使用Python处理BAM的方法
2018/09/28 Python
Django模板标签中url使用详解(url跳转到指定页面)
2020/03/19 Python
10个顶级Python实用库推荐
2021/03/04 Python
CSS3实现背景透明文字不透明的示例代码
2018/06/25 HTML / CSS
澳大利亚宠物商店:Petbarn
2017/11/18 全球购物
编写函数,将一个3*3矩阵转置
2013/10/09 面试题
JDBC操作数据库的基本流程是什么
2014/10/28 面试题
企业承诺书怎么写
2014/05/24 职场文书
五四青年节优秀演讲稿范文
2014/05/28 职场文书
服务承诺书
2015/01/19 职场文书
2015年护理工作总结范文
2015/04/03 职场文书
开展警示教育活动总结
2015/05/09 职场文书
解决Maven项目中 Invalid bound statement 无效的绑定问题
2021/06/15 Java/Android