gpt4 book ai didi

python - 如何循环通过 div 类以访问其中的 li 类?

转载 作者:行者123 更新时间:2023-11-28 22:11:20 25 4
gpt4 key购买 nike

我正在抓取一个页面,发现使用我的 xpath 和 regex 方法我似乎无法获得 div 类中的一组值

我已经尝试过本页此处所述的方法 How to get all the li tag within div tag然后下面显示的当前逻辑在我的文件中

    #PRODUCT ATTRIBUTES (STYLE, SKU, BRAND)     need to figure out how to loop thru a class and pull out the 2 list tags
prodattr = re.compile(r'<div class=\"pdp-desc-attr spec-prod-attr\">([^<]+)</div>', re.IGNORECASE)
prodattrmatches = re.findall(prodattr, html)
for m in prodattrmatches:
m = re.compile(r'<li class=\"last last-item\">([^<]+)</li>', re.IGNORECASE)
stymatches = re.findall(m, html)

#STYLE
sty = re.compile(r'<li class=\"last last-item\">([^<]+)</li>', re.IGNORECASE)
stymatches = re.findall(sty, html)

#BRAND
brd = re.compile(r'<li class=\"first first-item\">([^<]+)</li>', re.IGNORECASE)
brdmatches = re.findall(brd, html)

以上是当前无法运行的代码。返回时一切都是空的。出于测试的目的,我只是将数据(如果有的话)写入打印命令,以便我可以在控制台上看到它。

    itmDetails2 = dets['sku'] +","+ dets['description']+","+ dets['price']+","+ dets['brand']

在控制台中,这就是我得到的,这是我所期望的,在我弄清楚这个逻辑之前,通用消息只是占位符。

SKUE GOES HERE,adidas Women's Essentials Tricot Track Jacket,34.97, BRAND GOES HERE

<div class="pdp-desc-attr spec-prod-attr">
<ul class="prod-attr-list">
<li class="first first-item">Brand: adidas</li>
<li>Country of Origin: Imported</li>
<li class="last last-item">Style: F18AAW400D</li>
</ul>
</div>

最佳答案

Do not use Regex to parse HTML

有更好、更安全的方法来做到这一点。

使用 Parsel 查看此代码和 BeautifulSoup提取示例代码的 li 标记:

from parsel import Selector
from bs4 import BeautifulSoup

html = ('<div class="pdp-desc-attr spec-prod-attr">'
'<ul class="prod-attr-list">'
'<li class="first first-item">Brand: adidas</li>'
'<li>Country of Origin: Imported</li>'
'<li class="last last-item">Style: F18AAW400D</li>'
'</ul>'
'</div>')

# Using parsel
sel = Selector(text=html)

for li in sel.xpath('//li'):
print(li.xpath('./text()').get())

# Using BeautifulSoup
soup = BeautifulSoup(html, "html.parser")

for li in soup.find_all('li'):
print(li.text)

输出:

Brand: adidas
Country of Origin: Imported
Style: F18AAW400D
Brand: adidas
Country of Origin: Imported
Style: F18AAW400D

关于python - 如何循环通过 div 类以访问其中的 li 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55751756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com