python - 使用 beautifulSoup 时 html 内容发生变化
问题描述
我正在尝试从 html 块中提取 src 的属性值,该 html 块是:
<img class="product-image first-image" src="https://cache.net-a-porter.com/images/products/1083507/1083507_in_pp.jpg">
我的代码是:
import requests
import json
from bs4 import BeautifulSoup
import re
headers = {'User-agent': 'Mozilla/5.0'}
url = 'https://www.net-a-porter.com/us/en/product/1083507/maje/layered-plaid-twill-and-stretch-cotton-jersey-top'
page = requests.get(url, headers=headers)
soup = BeautifulSoup(page.content, 'html.parser')
if url.find('net-a-porter')!=-1 :
i = soup.find_all('img', class_="product-image first-image")[0]["src"]
print i
我得到的结果:
//cache.net-a-porter.com/images/products/1083507/1083507_in_xs.jpg
但我想得到原始 html 中的内容,应该是:
https://cache.net-aporter.com/images/products/1083507/1083507_in_pp.jpg
我的结果与原始src
值不同,http:
消失了,1083507_in_pp
变为1083507_in_xs
. 我不知道为什么会这样,有谁知道如何解决这个问题?谢谢!
解决方案
您很接近,但是,您需要"src"
从内置密钥访问attrs
密钥:
if url.find('net-a-porter')!=-1 :
i = soup.find_all('img', class_="product-image first-image")[0]
print i['src']
推荐阅读
- html - 我该如何做到这一点,以便当有人按下提交时,表格会清除?
- vim - vim 中的标准文本(非代码特定)文件类型
- c# - Visual Studio 2019 v16.6 无法构建 .net5 控制台应用程序并引发错误:.NETFramework,Version=v5.0 were not found
- html - Django taggit 应用程序不工作。用于过滤的标签名称未呈现
- c - 我应该使用带有 GTK+ 的 C 中的线程来为后门创建 GUI 控制器吗?
- angular-cli - Angular Schematics:在库中运行单元测试时出错
- c# - 如何在 wpf 中实现 XIPattern 枚举
- spring-boot - java.lang.ClassNotFoundException: org.apache.jute.OutputArchive 与最新的 spring-kafka 和 spring-kafka-test 2.5.2
- r - 写入失败:提供的名称包含非法字符。将 R 数据保存为 Stata 格式时出错
- php - Symfony5 项目的 Phan/phan 配置