python - Beautiful Soup 没有提供任何东西,尽管存在价值
问题描述
为什么我的以下代码给出了输出NONE
from bs4 import BeautifulSoup
import urllib3
import warnings
warnings.filterwarnings("ignore", category=FutureWarning)
urllib3.disable_warnings()
url = "https://www.amazon.ae/dp/B07N62ZGWQ/ref=br_msw_pdt-5?_encoding=UTF8&smid=ABO0A2K2SKD5O&pf_rd_m=A2KKU8J8O8784X&pf_rd_s=&pf_rd_r=GZ376KPZWEXC0TBHXPKY&pf_rd_t=36701&pf_rd_p=da8f558b-6ee9-4705-8e31-6a4c345b29e8&pf_rd_i=desktop"
http = urllib3.PoolManager()
r = http.request('GET', url)
content = r.data.decode('utf-8')
soup = BeautifulSoup(content,'html.parser')
print(soup.find('span', {'id':"priceblock_ourprice"}))
我尝试使用soup.find(id="priceblock_ourprice")
, soup.select("#priceblock_ourprice")
,但都给出了 None 输出。
ID 出现在页面上并且也有一个值。
解决方案
首先,我改成urllib3
因为requests
给出urllib3
了一个例外
请看下面的代码:
import requests
from bs4 import BeautifulSoup
url = "https://www.amazon.ae/dp/B07N62ZGWQ/ref=br_msw_pdt-5?_encoding=UTF8&smid=ABO0A2K2SKD5O&pf_rd_m=A2KKU8J8O8784X&pf_rd_s=&pf_rd_r=GZ376KPZWEXC0TBHXPKY&pf_rd_t=36701&pf_rd_p=da8f558b-6ee9-4705-8e31-6a4c345b29e8&pf_rd_i=desktop"
response = requests.request('GET', url)
content = response.content.decode('utf-8')
soup = BeautifulSoup(content, 'html.parser')
table = soup.find('table', attrs={'class': 'a-lineitem'})
price_blocks = table.find_all('span', attrs={'id': 'priceblock_ourprice'})
prices = [block.text for block in price_blocks]
print(prices)
输出控制台:
['AED26.00']
推荐阅读
- java - JSP、HTML 和 Servlet
- r - mutate 和 d recode 的语法
- java - okta oauth2 Spring security 所有受保护的页面重定向到登录
- azure - Azure 机器学习实验无法将 Blob 存储装载到计算群集
- typescript - 类在 typecirpt 中实现接口
- c# - .NET CORE Worker Service 不会读取控制器
- c# - 如何在产品 ASP.NET 上应用正确的折扣
- python - 在决策二元变量中打印结果
- c - 为什么不需要分配内存空间来存储函数返回的指针?
- r - 为什么 `fable::TSLM()` 的预测值略低于 `stats::lm()`?