1、基本使用
Document
由于浏览器的兼容性,每个浏览器的滚动条样式都不尽相同,使用css样式修改的话,也只有部分浏览器能达到你想要的效果。
better-scroll模拟实现滚动条,父容器设置固定高度,并设置属性 overflow:hidden,让子元素超出父容器后隐藏,better-scroll作用在父容器上,通过transform:translate属性来让子元素滚动到想要的地方。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
150. Requests-HTML:Python 的网页抓取新选择!
今天聊点不一样的。咱们平时做爬虫,很多人第一时间想到的可能是requests或BeautifulSoup,对吧?但其实,Python 还有个挺有意思的库,叫Requests-HTML。它可以说是个“全能选手”,自带网页抓取、DOM 解析、JS 渲染等功能,简单易用又强大,特别适合那些不想折腾太复杂工具的朋友。咱今天就来掰扯掰扯这个库怎么玩。
什么是 Requests-HTML?
Requests-HTML 是基于requests和pyquery封装的一个库,主打“开箱即用”,连JavaScript 动态渲染都能搞定(是的,你没听错),而且写起来老简单了。你可以把它当成 requests 和 BeautifulSoup 的结合体,甚至还能多点技能。
简单总结它的功能:
安装 Requests-HTML
先把这个库装上,一行命令搞定:
温馨提示:如果你用的是 Windows,可能会遇到依赖问题,记得提前装好PySide2或PyQt5,让 JS 渲染功能正常跑起来。
发请求,拿网页内容
Requests-HTML 最基本的功能就是发请求,这部分和 requests 差不多。直接上代码:
运行后,response.text就是网页的 HTML 内容了。是不是感觉和 requests 一模一样?没错,这就是它的基础操作。你还可以用POST或带参数的请求:
CSS 选择器,定位元素
抓到网页内容后,咱们就得解析数据,对吧?Requests-HTML 自带了CSS 选择器,用法特别直观。比如下面的例子:
这里的find方法就是用来找元素的,h1是 CSS 选择器,first=True表示只取第一个匹配的元素。如果你想抓多个元素,可以这样:
温馨提示:find返回的结果是一个列表,只有你加了first=True才会返回单个元素。
动态网页的 JS 渲染
现在很多网页都不是直接返回完整的 HTML,而是用 JavaScript 动态加载内容。这种时候,普通的 requests 或 BeautifulSoup 就抓不到数据了。但 Requests-HTML 自带 JS 渲染功能,可以帮你搞定这些棘手的动态网页。
例子来了:
看见response.html.render()了吧?这一步就是执行 JavaScript 的关键操作。渲染完成后,你就能拿到完整的网页内容。
注意事项:
JS 渲染需要浏览器支持,确保你的环境安装了 PyQt 或 PySide。
渲染时间可能稍长,尤其是页面上有复杂 JS 的时候。
提取文本和其他数据
Requests-HTML 还提供了一些方便的小工具,帮你快速提取网页上的文字、图片等内容。比如:
提取纯文本
下载图片
这里的response.content是以二进制形式返回的内容,非常适合保存图片、视频等文件。
常见报错和坑点
虽然 Requests-HTML 好用,但是新手踩坑也不少,列几个常见问题:
JS 渲染失败
如果render()报错,多半是因为缺少 PyQt 或 PySide,赶紧检查依赖库。
CSS 选择器找不到元素
有时候网页的 DOM 结构会因为 JS 动态加载而变化,记得用render()后的 HTML 再找元素。
编码问题
如果抓到的中文变成乱码,可以尝试手动设置编码:
Requests-HTML 的实际应用场景
Requests-HTML 适合一些简单的爬虫任务,比如:
如果是复杂的爬虫项目,比如需要模拟登录或处理复杂的反爬机制,Requests-HTML 可能不太够用,得加点别的工具,比如 Selenium。
今天聊的内容
Requests-HTML 是个啥,能干啥。
怎么用 Requests-HTML 发请求、解析网页。
动态网页的 JS 渲染技巧。
提取文本、下载图片的小功能。
常见问题和坑点。
学完这个库,你会发现它特别适合入门爬虫,功能全、易上手,而且代码清爽不臃肿。不过嘛,工具只是工具,关键还是得多练。爬虫这个东西,越玩越有意思!