Request

Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用

上面一句话 出自Requests官方文档的第一句,从而奠定了其逗逼的文档风格。类似的还有:

警告:非专业使用其他 HTTP 库会导致危险的副作用,包括:安全缺陷症、冗余代码症、重新发明轮子症、啃文档症、抑郁、头疼、甚至死亡。

Request是一个基于urllib3的Python的Http库。这里就可以看出它的存在是为了取代urllib、urllib2等Http工具的江湖地位的,事实上确实如此,相对于前两者来说它是更高级的工具。比如urllib和urllib2配合使用的时候我们需要手动地用urlencode为POST表单数据编码或者手动为GET方式添加url的查询字符串,使用requests就不需要考虑这种问题。还有keep-alive和Http连接池的功能都是全自动化的。

它的官方文档简单明了,在这里可以找到

Beautiful Soup

当我学习用正则表达式抓取网页内容的时候,就在想这种对着每个页面反反复复的盯着看,都要长鸡眼了,就是为了写一个正则表达式,是不是效率太低也太容易出错了。Beautiful Soup这种工具很明显就是为了解决我的这种疑惑的。

它是一个用于从HTML和XML文档中提取数据的Python库,可以实现文档的导航、查找、修改,让我们从繁琐、低效、易错的正则表达式中解脱出来。它把HTML这种基于标签的文档组织成树的结构,方便我们用面向对象的方式获取内容。目前最新的是beautifulsoup4。

我的系统是Ubuntu16.04,安装Beautiful Soup:

sudo pip install beautifulsoup4

Beautiful Soup有中文版的文档,在这里

Beautiful Soup是一个获取文档内容的高层的封装,它是支持多种解析器的,默认的是Python标准库中的HTMLParser。第三方解析器支持lxml和html5lib,不同的解析器有各自的特点,官方文档中做出了对比的表格。在用html文档构造beautifulsoup对象的时候,可以指定解析器来解析文档:

from bs4 import  BeautifulSoup
soup = BeautifulSoup(open("index.html"), "html.parser")

如果不指定而系统中又有多种解析器的话,系统会选择最合适的解析器来解析文档。

BeautifulSoup把HTML的每个节点都转换成Python对象,这些对象分为Tag , NavigableString , BeautifulSoup , Comment四个种类。

Tag:也就是xml或者HTML中的标签

NavigableString:称为“可以遍历的字符串”

Beautiful

测试网站:http://httpbin.org/

这是一个专门用于测试Http请求和相应的网站。在学习各种工具和方法的时候做实验尝试和验证是必不可少的环节,这种时候这个网站就排上了用场。它支持各种HTTP的场景,请求的响应内容都是以json编码的。例如:

$ curl http://httpbin.org/ip

{"origin": "24.127.96.129"}

事实上,Requests的官网就是是它来讲解的例子。

几个Python爬虫工具介绍的更多相关文章

  1. python爬虫工具集合

    python爬虫工具集合 大家一起来整理吧!强烈建议PR.这是初稿,总是有很多问题,而且考虑不全面,希望大家支持! 源文件 主要针对python3 常用库 urllib Urllib是python提供 ...

  2. 常见Python爬虫工具总结

    常见Python爬虫工具总结 前言 以前写爬虫都是用requests包,虽然很好用,不过还是要封装一些header啊什么的,也没有用过无头浏览器,今天偶然接触了一下. 原因是在处理一个错误的时候,用到 ...

  3. python爬虫工具

    一直都听说python写爬虫工具非常方便,为了获取数据,我也要写点爬虫,但是python太灵活了,不知道python爬虫要哪些框架,要了解,比如beatiful soup,scrapy, 爬虫的额主要 ...

  4. Python 爬虫工具 —— fake_useragent

    服务器为避免爬虫工具无休止的请求,以减轻负载,会对 user agent 进行校验,即判断某一 user-agent 是否不断地进行请求.可采用如下方式进行绕过服务器的校验. UserAgent_Li ...

  5. 一个python爬虫工具类

    写了一个爬虫工具类. # -*- coding: utf-8 -*- # @Time : 2018/8/7 16:29 # @Author : cxa # @File : utils.py # @So ...

  6. [python] 基础工具介绍好文推荐

    Github上有个哥们写的,还不错,mark一下: https://github.com/lijin-THU/notes-python/blob/master/index.ipynb 相对全面的介绍了 ...

  7. Python爬虫简单介绍

    相关环境: Python3 requests库 BeautifulSoup库 一.requests库简单使用 简单获取一个网页的源代码: import requests sessions = requ ...

  8. Python爬虫和情感分析简介

    摘要 这篇短文的目的是分享我这几天里从头开始学习Python爬虫技术的经验,并展示对爬取的文本进行情感分析(文本分类)的一些挖掘结果. 不同于其他专注爬虫技术的介绍,这里首先阐述爬取网络数据动机,接着 ...

  9. python爬虫工程师各个阶段需要掌握的技能和知识介绍

    本文主要介绍,想做一个python爬虫工程师,或者也可以说是,如何从零开始,从初级到高级,一步一步,需要掌握哪些知识和技能. 初级爬虫工程师: Web前端的知识:HTML, CSS, JavaScri ...

随机推荐

  1. 手摸手,带你用vue实现后台管理权限系统及顶栏三级菜单显示

    手摸手,带你用vue实现后台管理权限系统及顶栏三级菜单显示 效果演示地址 项目demo展示 重要功能总结 权限功能的实现 权限路由思路: 根据用户登录的roles信息与路由中配置的roles信息进行比 ...

  2. 【Java例题】1.1计算n的阶乘

    package study; import java.util.*; import java.math.*; public class myClass { public static void mai ...

  3. Of efficiency and methodology

    There are only too many articles and books which pertains to the discussion of efficiency and method ...

  4. iview自定义实现多级表头

    最近更新: 2018-07-19 注意:最新版iview已经提供多级表头功能 参考 原理:利用多个Table组件通过显示和隐藏thead和tbody来拼接表格(较粗暴) html <div st ...

  5. 一文了解java异常机制

    1.异常的概述 1.1什么是异常? 异常:程序在运行过程中发生由于外部问题导致的程序异常事件,发生的异常会中断程序的运行.(在Java等面向对象的编程语言中)异常本身是一个对象,产生异常就是产生了一个 ...

  6. 重学计算机组成原理(五)- "旋转跳跃"的指令实现

    CPU执行的也不只是一条指令,一般一个程序包含很多条指令 因为有if-else.for这样的条件和循环存在,这些指令也不会一路平直执行下去. 一个计算机程序是怎么被分解成一条条指令来执行的呢 1 CP ...

  7. 大数据学习之旅2——从零开始搭hadoop完全分布式集群

    前言 本文从零开始搭hadoop完全分布式集群,大概花费了一天的时间边搭边写博客,一步一步完成完成集群配置,所以相信大家按照本文一步一步来完全可以搭建成功.需要注意的是本文限于篇幅和时间的限制,也是为 ...

  8. G-P-M 模型

    G-P-M 模型概述 每一个OS线程都有一个固定大小的内存块(一般会是2MB)来做栈,这个栈会用来存储当前正在被调用或挂起(指在调用其它函数时)的函数的内部变量.这个固定大小的栈同时很大又很小.因为2 ...

  9. neural_transfer风格迁移

    ContentLoss 首先是要定义一个内容差异损失函数,这里直接调用functional.mse_loss(input,self.target)就可以计算出其内容差异损失. 注意这里一般是定义一个网 ...

  10. java线程池,工作窃取算法

    前言 在上一篇<java线程池,阿里为什么不允许使用Executors?>中我们谈及了线程池,同时又发现一个现象,当最大线程数还没有满的时候耗时的任务全部堆积给了单个线程, 代码如下: T ...