【问题标题】:How to extract <li> from <ul using BeautifulSoup如何使用 BeautifulSoup 从 <ul 中提取 <li>
【发布时间】:2021-10-25 03:16:03
【问题描述】:

我正在尝试从此id 中提取&lt;li&gt; 之间的文本。每当我运行我的代码时,它都会输出None。我必须为&lt;ul class = "qtyBreakUl" 创建一个变量吗?

我正在尝试提取的 HTML:

import requests

source = requests.get('https://www.gogsg.com/2316358/Product/Wrisco_DECMSB24-1824').text

soup = BeautifulSoup(source, 'lxml')


test = soup.find(id = 'tdPriceBreak_DECMSB24-1824')

test1 = test.find('ul')

print(test1)

【问题讨论】:

  • 查看您尝试提取的文本可能是使用JS 动态呈现的,因此bs4 无法处理这种类型的数据,如果可能,它将仅返回静态数据您可以分享URL!

标签: python-3.x beautifulsoup


【解决方案1】:

数据是动态加载的。如果您检查浏览器的网络选项卡,您将看到正在发出的请求。您可以使用以下命令重现 GET 请求:

import requests


params = {
    "productIdList": "DECMSB24-1824,DECMSB24-2436,DECMSB24-2424,DECMSB24-1824,WRIW040-1218,WRIW040RAD34-1824,MDO1SR-12-48120-RAW"
}

response = requests.get(
    "https://www.gogsg.com/getPriceDetailPage.action", params=params
).json()


for data in response:
    print("{:<30} {}".format(data["partNumber"], data["price"]))

输出:

DECMSB24-1824                  11.32
DECMSB24-2436                  23.91
DECMSB24-2424                  15.02
DECMSB24-1824                  11.32
WRIW040-1218                   7.97
WRIW040RAD34-1824              17.78
MDO1SR-12-48120-RAW            94.98

【讨论】:

  • 谢谢!我刚开始网页抓取,所以我会看一些关于动态网站的教程
  • 你将如何从
    • @Blutch 我不确定你的意思。另外,请注意,您可能需要使用名为 Selenium 的工具来抓取动态网站,因为您可以使用实际的 HTML
    猜你喜欢
    • 2011-05-20
    • 2020-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 2013-04-28
    • 1970-01-01
    • 2021-10-18
    相关资源
    最近更新 更多