python - 如何用 python 和漂亮的汤刮掉 CSS 图标
问题描述
我正在抓取网站的付款方式,但所有付款方式都是在 CSS 的帮助下添加的。我不知道如何抓取该代码。我试图在 StackOverflow 上找到,但找不到任何有用的材料。付款方式在页面底部的左下角给出。
payment_method = soup.find("div", class_="footer-second")
payyment_method = payment_method.find("div", class_="drz-footer-width-25 payment-column")
payment_method = payment_method.find_all("span")
这是我使用的代码。但是我不知道如何抓取无法进一步编码的类图像或图像链接。标签中没有 href 或 src 链接,只有 CSS 类用于在页面上显示图标。
解决方案
它来自图像网址。您需要从相关源 css 文件中正则表达式输出图像 url,然后尝试某种形式的光学识别软件。以下为您提供网址。
import requests, re
r = requests.get('https://laz-g-cdn.alicdn.com/lzdmod/desktop-footer-daraz/5.2.38/??pc/index.css')
p = re.compile(r'icon-yatra-v-pk{.*\.drz-footer-sprit{background-image:url\((.*?)\);')
image_url = 'https:' + p.findall(r.text)[0]
print(image_url)
正则表达式:
css 指令通过类属性和 css 样式指令将此图像的一部分“放入框架”中。例如,.icon-yatra-payment-8
在浏览器中输入并回车,然后检查节点的 css 指令;您将看到指定的背景位置、宽度和高度以及作为内联块的背景图像。您还将看到这些说明的源 css 文件的链接。
推荐阅读
- python - 使用 python3 将 .key 格式的私钥转换为 .pem 格式
- arrays - 使用预处理在 O(1) 时间内找到数组中最接近的数字
- button - Shopware 6 - 如何在 SW6 的插件系统配置中添加按钮组件
- c++ - 二进制有什么用 - 或者如果使用相同的值?(分段树)
- flutter - 如何在 Flutter Web 中插入 Adsense 展示广告
- c# - Net Core:对于非空数据类型,自动在请求 API 中强制执行所需的类成员
- discord - discord.py和discord.py的区别[voice]
- python - 如何修复不起作用的python请求分页
- vue.js - 如何使用 vuejs 嵌套组件?
- sql-server - 合并语句与视图