_2_ 发表于 2019-12-1 20:30:12

requests-html —— requests 的亲弟弟

本帖最后由 _2_ 于 2019-12-1 20:35 编辑


什么?!requests-html 是个什么鬼?

别被标题误解了,其实和 requests 一样,它也是一个

6到飞起的网页解析利器

说白了就是 requests 的新一代

今天就像大家来介绍

关于 requests-html 的那些事

Part 1 安装

这还不好说,用 pip 不就行了吗?

pip install requests-html

况且,这个方法我们何止用了千万遍......

Part 2 新特性

在最新的 requests-html 中主要有一下几个新特性

手动敲黑板!!!

全面支持 JavaScript
CSS 选择器
自定义 User-Agent
自动追踪重定向
连接池与 cookies 持久化

哇塞,这么厉害!
反正我也看不懂

Part 3 简单上手

搞不懂没关系,凡事先从最简单的开始

做爬虫,接触到最多的便是 requests 和 bs4 , 偶尔也会用用 json , XPath 什么的,
反正都是先用 requests 获取网页源码,再通过 bs4 进行解析

但是,
在 requests-html 中,只需要一步!

在 requests-html 中,
对PyQuery requests lxml bs4 等库进行了二次封装,
将 requests 的
简单 便捷 强大做了又一次升级

也就是说,
用 requests-html 只需一步就可以直接进行 JS 渲染!

下面用一个简单的例子展示一下 requests-html 的强大:

>>> #1-1
>>> import requests_html
>>> session = requests_html.HTMLSession
>>> h = session.get("https://fishc.com.cn")
>>> type(h)
<class 'requests_html.HTMLResponse'>
>>> h.request
<PreparedRequest >
>>> h.status_code
200

高能预警开始!

支持 JavaScript

不用使用 requests 库也能渲染 JavaScript 页面:

#1.2
from requests_html import HTML
doc = """<a >"""
html = HTML(html=doc)
print(html.links)
script = """
      () => {
            return {
                width: document.documentElement.clientWidth,
                height: document.documentElement.clientHeight,
                deviceScaleFactor: window.devicePixelRatio,
            }
      }
    """
val = html.render(script=script, reload=False)
print(val)
print(html.html)

当然,还支持 CSS 和 XPath 选择器:

>>> #先运行1.1
>>> node = h.html.find('#about', first=True)
>>>

小插曲:
**** Hidden Message *****

至于 CSS 和 XPath,
小甲鱼都有讲,
想复习的鱼油可以好好看看 requests-html 官方的文档

比较实用的一些方法

requests_html.user_agent(style=None)

返回一个指定风格的合法的用户代理,默认是 Chrome 风格的用户代理

requests_html.HTMLSession(mock_browser=True)

这是一个可被销毁的 Session 对象,可用于 Cookie 持久化和连接池,以及其他地方。

_2_ 发表于 2019-12-1 20:33:19

@zltzlt 完工啦{:10_298:}

zltzlt 发表于 2019-12-1 20:34:06

_2_ 发表于 2019-12-1 20:33
@zltzlt 完工啦

可用于 Cookie持久化

改改

zltzlt 发表于 2019-12-1 20:35:51

zltzlt 发表于 2019-12-1 20:34
改改

@小甲鱼 此帖是否能加精?

_2_ 发表于 2019-12-1 20:35:56

zltzlt 发表于 2019-12-1 20:34
改改

已改完

_2_ 发表于 2019-12-1 20:44:32

@zltzlt 再次申精{:10_298:}

zltzlt 发表于 2019-12-1 20:45:06

_2_ 发表于 2019-12-1 20:44
@zltzlt 再次申精

我无加精权限,需要靠小甲鱼

_2_ 发表于 2019-12-1 20:45:57

zltzlt 发表于 2019-12-1 20:45
我无加精权限,需要靠小甲鱼

嗯,好的,
请@小甲鱼

zltzlt 发表于 2019-12-1 20:46:19

_2_ 发表于 2019-12-1 20:45
嗯,好的,
请@小甲鱼

已 @

https://fishc.com.cn/forum.php?mod=redirect&goto=findpost&ptid=151642&pid=4215663

yuweb 发表于 2019-12-2 09:10:22

学习一下

wiselin 发表于 2019-12-2 12:00:16

这个好像不错,最重要是支持JS,不知道效率跟Scrapy比如何

_2_ 发表于 2019-12-3 20:09:36

wiselin 发表于 2019-12-2 12:00
这个好像不错,最重要是支持JS,不知道效率跟Scrapy比如何

这大概就是网络爬虫三剑客
requests bs4 scrapy

流羽星 发表于 2019-12-21 21:15:41

学习下

_2_ 发表于 2019-12-21 21:50:26

流羽星 发表于 2019-12-21 21:15
学习下

谢谢你把我的帖子顶了一下

TCY 发表于 2019-12-22 13:04:31

比得上selenium吗?

_2_ 发表于 2019-12-22 13:19:54

TCY 发表于 2019-12-22 13:04
比得上selenium吗?

各有各的优点吧

foshanqing 发表于 2020-1-3 07:05:54

6666

975050208@qq.co 发表于 2020-1-3 11:57:24

{:5_108:}

LJZheng 发表于 2020-1-3 21:49:16

ohhhhh

liubei0807 发表于 2020-1-3 23:18:54

{:5_90:}
页: [1] 2
查看完整版本: requests-html —— requests 的亲弟弟