首页 > 解决方案 > 使用 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. 我不知道为什么会这样,有谁知道如何解决这个问题?谢谢!

标签: pythonhtmlbeautifulsouppython-requestsweb-crawler

解决方案


您很接近,但是,您需要"src"从内置密钥访问attrs密钥:

if url.find('net-a-porter')!=-1 :
  i = soup.find_all('img', class_="product-image first-image")[0]
  print i['src']

推荐阅读