鱼C论坛

 找回密码
 立即注册
查看: 82|回复: 11

[技术交流] requests-html —— requests 的亲弟弟

[复制链接]
最佳答案
16 
发表于 2019-12-1 20:30:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

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


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

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

6到飞起的网页解析利器

说白了就是 requests 的新一代

今天就像大家来介绍

关于 requests-html 的那些事


Part 1 安装

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

  1. 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-1
  2. >>> import requests_html
  3. >>> session = requests_html.HTMLSession
  4. >>> h = session.get("https://fishc.com.cn")
  5. >>> type(h)
  6. <class 'requests_html.HTMLResponse'>
  7. >>> h.request
  8. <PreparedRequest [GET]>
  9. >>> h.status_code
  10. 200
复制代码


高能预警开始!

支持 JavaScript

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

  1. #1.2
  2. from requests_html import HTML
  3. doc = """<a >"""
  4. html = HTML(html=doc)
  5. print(html.links)
  6. script = """
  7.         () => {
  8.             return {
  9.                 width: document.documentElement.clientWidth,
  10.                 height: document.documentElement.clientHeight,
  11.                 deviceScaleFactor: window.devicePixelRatio,
  12.             }
  13.         }
  14.     """
  15. val = html.render(script=script, reload=False)
  16. print(val)
  17. print(html.html)
复制代码


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

  1. >>> #先运行1.1
  2. >>> node = h.html.find('#about', first=True)
  3. >>>
复制代码


小插曲:
游客,如果您要查看本帖隐藏内容请回复


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


比较实用的一些方法

  1. requests_html.user_agent(style=None)
复制代码


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

  1. requests_html.HTMLSession(mock_browser=True)
复制代码


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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
16 
 楼主| 发表于 2019-12-1 20:33:19 | 显示全部楼层
@zltzlt 完工啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
882 
发表于 2019-12-1 20:34:06 | 显示全部楼层
可用于 Cookie持久化


改改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
882 
发表于 2019-12-1 20:35:51 | 显示全部楼层

@小甲鱼 此帖是否能加精?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
16 
 楼主| 发表于 2019-12-1 20:35:56 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
16 
 楼主| 发表于 2019-12-1 20:44:32 | 显示全部楼层
@zltzlt 再次申精
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
882 
发表于 2019-12-1 20:45:06 | 显示全部楼层
_2_ 发表于 2019-12-1 20:44
@zltzlt 再次申精

我无加精权限,需要靠小甲鱼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
16 
 楼主| 发表于 2019-12-1 20:45:57 | 显示全部楼层
zltzlt 发表于 2019-12-1 20:45
我无加精权限,需要靠小甲鱼

嗯,好的,
请@小甲鱼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
882 
发表于 2019-12-1 20:46:19 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
46 
发表于 2019-12-2 09:10:22 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
发表于 2019-12-2 12:00:16 | 显示全部楼层
这个好像不错,最重要是支持JS,不知道效率跟Scrapy比如何
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
16 
 楼主| 发表于 2019-12-3 20:09:36 From FishC Mobile | 显示全部楼层
wiselin 发表于 2019-12-2 12:00
这个好像不错,最重要是支持JS,不知道效率跟Scrapy比如何

这大概就是网络爬虫三剑客
requests bs4 scrapy
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号

GMT+8, 2019-12-12 19:48

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表