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. 深入Apache NiFi 之源码学习

    前言 要问 Hortonworks 这家公司最有产品力的产品是什么,我觉得是 Apache NiFi.去年Cloudera 和 Hortonworks 合并之后,以 Cloudera 为主,两家公司进 ...

  2. python使用pip安装第三方库以及镜像使用豆瓣源安装第三方库

    2018/8/7  在使用pip安装pynum第三方库时的随笔 所有的前提都是你成功安装了pip 首先第一步 打开命令提示符  输入pip show pip 查看当前pip版本 然后可以上官网搜索一下 ...

  3. 对API进行版本控制的重要性和实现方式

    我在API设计中收到的最常见问题之一就是如何对API进行版本控制.虽然并非所有API都完全相同,但我发现在API版本控制方面,某些模式和实践适用于大多数团队.我已经将这些内容收集起来,下面将提供一些关 ...

  4. L4170[CQOI2007]涂色

    #include <bits/stdc++.h> using namespace std; #define rep(i, a, b) for (int i = a; i <= b; ...

  5. mysql 查询结果显示行号

    mysql 查询时,不像oracle那样,可以直接用 rownum 显示结果行号. 可以用定义用户变量来实现 set @myrnum = 0; select (@myrnum := @myrnum + ...

  6. Django中自定义admin---Xadmin的实现

    在Django框架中,自带一个后台管理页面admin,这个管理页面很全,但是,有些并不是我们需要的,所以我们可以根据admin的实现流程来自定义自己的需求,即根据admin的实现方式来实现自定制--X ...

  7. Vue系列:Vue Router 路由梳理

    Vue Router 是 Vue.js 官方的路由管理器.它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌.包含的功能有: 嵌套的路由/视图表 模块化的.基于组件的路由配置 路由参数. ...

  8. intellij idea 2019 安装使用教程

    一.安装 idea   2019.2   链接:https://pan.baidu.com/s/1acx_P23W463it9PGAYUIBw 提取码:4bky 双击运行idea.exe 点击Next ...

  9. mysql5.7绿色版配置以及找不到 mysql服务问题解决

    一.下载软件 1. 进入mysql官网,登陆自己的Oracle账号(没有账号的自己注册一个),下载Mysql-5.7.17,下载地址:http://dev.mysql.com/downloads/my ...

  10. 基于vue手写tree插件那点事

    目录 iview提供的控件 手写控件 手写控件扩展 手写控件总结 # 加入战队 微信公众号 主题 Tree树形控件在前端开发中必不可少,对于数据的展示现在网站大都采取树形展示.因为大数据全部展示出来对 ...