better-scroll实现菜单和内容联动的效果

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

先把这个库装上,一行命令搞定:

pip install requests-html

温馨提示:如果你用的是 Windows,可能会遇到依赖问题,记得提前装好PySide2或PyQt5,让 JS 渲染功能正常跑起来。

发请求,拿网页内容

Requests-HTML 最基本的功能就是发请求,这部分和 requests 差不多。直接上代码:

from requests_html import HTMLSession

# 创建会话

session = HTMLSession()

# 发送 GET 请求

response = session.get('https://example.com')

# 打印响应内容

print(response.text)

运行后,response.text就是网页的 HTML 内容了。是不是感觉和 requests 一模一样?没错,这就是它的基础操作。你还可以用POST或带参数的请求:

data = {'key': 'value'}

response = session.post('https://httpbin.org/post', data=data)

print(response.json())

CSS 选择器,定位元素

抓到网页内容后,咱们就得解析数据,对吧?Requests-HTML 自带了CSS 选择器,用法特别直观。比如下面的例子:

from requests_html import HTMLSession

session = HTMLSession()

response = session.get('https://example.com')

# 用 CSS 选择器定位标题

title = response.html.find('h1', first=True)

print(title.text) # 打印标题内容

这里的find方法就是用来找元素的,h1是 CSS 选择器,first=True表示只取第一个匹配的元素。如果你想抓多个元素,可以这样:

# 抓取所有链接

links = response.html.find('a')

for link in links:

    print(link.attrs['href']) # 打印每个链接的 href 属性

温馨提示:find返回的结果是一个列表,只有你加了first=True才会返回单个元素。

动态网页的 JS 渲染

现在很多网页都不是直接返回完整的 HTML,而是用 JavaScript 动态加载内容。这种时候,普通的 requests 或 BeautifulSoup 就抓不到数据了。但 Requests-HTML 自带 JS 渲染功能,可以帮你搞定这些棘手的动态网页。

例子来了:

from requests_html import HTMLSession

session = HTMLSession()

response = session.get('https://example.com')

# 执行 JavaScript 渲染

response.html.render()

# 打印渲染后的 HTML

print(response.html.html)

看见response.html.render()了吧?这一步就是执行 JavaScript 的关键操作。渲染完成后,你就能拿到完整的网页内容。

注意事项:

JS 渲染需要浏览器支持,确保你的环境安装了 PyQt 或 PySide。

渲染时间可能稍长,尤其是页面上有复杂 JS 的时候。

提取文本和其他数据

Requests-HTML 还提供了一些方便的小工具,帮你快速提取网页上的文字、图片等内容。比如:

提取纯文本

from requests_html import HTMLSession

session = HTMLSession()

response = session.get('https://example.com')

# 提取纯文本

text = response.html.text

print(text)

下载图片

# 下载图片并保存到本地

img_url = 'https://example.com/image.jpg'

img_response = session.get(img_url)

with open('image.jpg', 'wb') as f:

    f.write(img_response.content)

这里的response.content是以二进制形式返回的内容,非常适合保存图片、视频等文件。

常见报错和坑点

虽然 Requests-HTML 好用,但是新手踩坑也不少,列几个常见问题:

JS 渲染失败

如果render()报错,多半是因为缺少 PyQt 或 PySide,赶紧检查依赖库。

CSS 选择器找不到元素

有时候网页的 DOM 结构会因为 JS 动态加载而变化,记得用render()后的 HTML 再找元素。

编码问题

如果抓到的中文变成乱码,可以尝试手动设置编码:

    response.encoding = 'utf-8'

Requests-HTML 的实际应用场景

Requests-HTML 适合一些简单的爬虫任务,比如:

如果是复杂的爬虫项目,比如需要模拟登录或处理复杂的反爬机制,Requests-HTML 可能不太够用,得加点别的工具,比如 Selenium。

今天聊的内容

Requests-HTML 是个啥,能干啥。

怎么用 Requests-HTML 发请求、解析网页。

动态网页的 JS 渲染技巧。

提取文本、下载图片的小功能。

常见问题和坑点。

学完这个库,你会发现它特别适合入门爬虫,功能全、易上手,而且代码清爽不臃肿。不过嘛,工具只是工具,关键还是得多练。爬虫这个东西,越玩越有意思!

‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌

本站内容来自用户投稿,如果侵犯了您的权利,请与我们联系删除。联系邮箱:835971066@qq.com

本文链接:http://news.xiuzhanwang.com/post/2647.html

友情链接: