gpt4 book ai didi

html - 使用 BeautifulSoup 通过标记类迭代 html

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

我正在将网页中的一些特定标签保存到 Excel 文件中,因此我有以下代码:

`import requests
from bs4 import BeautifulSoup
import openpyxl

url = "http://www.euro.com.pl/telewizory-led-lcd-plazmowe,strona-1.bhtml"
source_code = requests.get(url)
plain_text = source_code.text
soup = BeautifulSoup(plain_text, "html.parser")

wb = openpyxl.Workbook()
ws = wb.active

tagiterator = soup.h2

row, col = 1, 1
ws.cell(row=row, column=col, value=tagiterator.getText())
tagiterator = tagiterator.find_next()

while tagiterator.find_next():
if tagiterator.name == 'h2':
row += 1
col = 1
ws.cell(row=row, column=col, value=tagiterator.getText(strip=True))
elif tagiterator.name == 'span':
col += 1
ws.cell(row=row, column=col, value=tagiterator.getText(strip=True))
tagiterator = tagiterator.find_next()

wb.save('DG3test.xlsx')`

它有效,但我想排除一些标签。我只想获得具有“产品名称”类的 h2 标签和具有“属性值”类的跨度标签。我试图通过以下方式做到这一点:

tagiterator['class'] == 'product-name'

tagiterator.hasClass('product-name')

tagiterator.get

还有一些也没有用。

我想要的值在我创建的这张糟糕的图像中可见:https://ibb.co/eWLsoQurl 在代码中。

最佳答案

没有包括的是将它写入 excel 文件,希望,这是你可以做的事情,尽管如此,只需写一条评论,我将包括为此的代码。逻辑适用,写入产品信息,添加 row+=1 和 column 然后重置列...(我们为什么要这样做?所以产品保持在同一行中:)。你已经做过的事情

from bs4 import BeautifulSoup

import requests

header = {'User-agent' : 'Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5'}


url = requests.get("http://www.euro.com.pl/telewizory-led-lcd-plazmowe,strona-1.bhtml", headers=header).text
soup = BeautifulSoup(url, 'lxml')

find_products = soup.findAll('div',{'class':'product-row'})

for item in find_products:
title_text = item.find('div',{'class':'product-header'}).h2.a.text.strip() #Finds the title / name of product
# print(title_text)
display = item.find('span',{'class':'attribute-value'}).text.strip() #Finds for example the this text 49 cali, Full HD, 1920 x 1080
# print(display)
functions_item = item.findAll('span',{'class':'attribute-value'})[1] #We find now the functions or the 'Funkcje'
list_of_funcs = functions_item.findAll('a') #We find the list of the functions e.g. wifi
#Now you can store them or do-smt...

for funcs in list_of_funcs:
print(funcs.text.strip())

算法:

  1. 我们找到每个产品
  2. 我们在每个产品中找到标签并提取相关信息
  3. 我们使用 .text 只提取文本部分
  4. 我们使用 for 循环遍历每个产品,然后遍历它们的功能或包含产品功能的标签。

关于html - 使用 BeautifulSoup 通过标记类迭代 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44608008/

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