如何打印python字符串的某些部分?

2024-06-26 00:01:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图从亚马逊网站上撕下一页。我陷入困境的部分是如何以整洁的方式获取数据。目前,我有一个名单,称为a,与亚马逊网页上的每一个项目。我的代码是:

import requests
from bs4 import BeautifulSoup

r = requests.get('https://www.amazon.de/s/ref=nb_sb_noss_2?__mk_nl_NL=    %C3%85M%C3%85%C5%BD%C3%95%C3%91&url=search-alias%3Daps&field-keywords=processor')

page = BeautifulSoup(r.text, 'html.parser')

a = []
itemAmount = (len(page.find_all('div', class_='s-item-container')))
for x in range(itemAmount):
a.append(page.find_all('div', class_='s-item-container')[x].get_text("|",     strip=True))

print(*a, sep='\n')

这将输出一个名为a的数组中的产品名称。它类似于:

Intel Core i7-8700K Processor (6x 3.7 GHz Taktfrequenz, 12 MB L3-Cache, Boxed ohne Kühler)|von|Intel|EUR 342,45|Prime|Kostenlose Lieferung möglich.|Andere Angebote|EUR 330,00|(102 gebrauchte und neue Artikel)|4,6 von 5 Sternen|110
AMD Ryzen 5 1600 Prozessor|von|AMD|EUR 144,90|Prime|Exklusiv für Prime-Mitglieder|Versandbereit in 1-2 Tagen.|Neueres Modell dieses Artikels anzeigen|4,6 von 5 Sternen|286
AMD FX-8350 FD8350FRHKBOX Prozessor (Black Edition, 8MB Cache, 4.00 GHz Turbo 4.20 GHz, Sockel AM3+) weiß|von|AMD|EUR 73,99|Prime|Kostenlose Lieferung möglich.|Andere Angebote|EUR 65,00|(55 gebrauchte und neue Artikel)|4,3 von 5 Sternen|356
Intel Core i5-7500 Prozessor (7. Generation, bis zu 3.80 GHz mit Intel Turbo-Boost-Technik 2.0, 6 MB Intel Smart-Cache)|von|Intel|EUR 184,99|Prime|Kostenlose Lieferung möglich.|Andere Angebote|EUR 177,63|(76 neue Artikel)|4,4 von 5 Sternen|30
AMD Ryzen 5 1400 Prozessor|von|AMD|EUR 117,90|Prime|Kostenlose Lieferung möglich.|Andere Angebote|EUR 109,82|(75 gebrauchte und neue Artikel)|4,6 von 5 Sternen|287
Intel Pentium G4400 BX80662G4400 Prozessor (3,30 GHz, 3 MB Intel Smart-Cache)|von|Intel|EUR 49,99|Prime|Kostenlose Lieferung möglich.|Andere Angebote|EUR 40,33|(88 gebrauchte und neue Artikel)|4,2 von 5 Sternen|19
Intel Core i9-7900X Prozessor, der X-Serie (bis zu 4,30 GHz, 13,75 MB Intel Cache|von|Intel|EUR 875,99|Prime|Kostenlose Lieferung möglich.|Nur noch 19 Stück auf Lager - jetzt bestellen.|Andere Angebote|EUR 569,00|(47 neue Artikel)|5 von 5 Sternen|8
Intel Core i7–7700 K 4,2 GHz QuadCore 8 MB Cache Prozessor|von|Intel|EUR 289,00|Prime|Kostenlose Lieferung möglich.|Nur noch 1 Stück auf Lager - jetzt bestellen.|Neueres Modell dieses Artikels anzeigen|4,1 von 5 Sternen|6
Intel Core i5-6400 2,7GHz Boxed CPU|von|Intel|EUR 160,99|Prime|Kostenlose Lieferung möglich.|Nur noch 1 Stück auf Lager - jetzt bestellen.|Andere Angebote|EUR 127,90|(64 gebrauchte und neue Artikel)|3,9 von 5 Sternen|20
AMD FD4300WMHKBOX Quad-Core Prozessor (3,8 GHz, AM3 + Sockel, 8 MB Cache, 95 Watt) mit Kühlkörper und Lüfter|von|AMD|EUR 49,99|Prime|Kostenlose Lieferung möglich.|Andere Angebote|EUR 42,11|(48 gebrauchte und neue Artikel)|Neueres Modell dieses Artikels anzeigen|3,9 von 5 Sternen|51
AMD Ryzen 7 1700 Prozessor mit Wraith-Spire-LED-Kühler|von|AMD|EUR 207,90|Prime|Kostenlose Lieferung möglich.|Andere Angebote|EUR 190,08|(82 gebrauchte und neue Artikel)|Neueres Modell dieses Artikels anzeigen|4,6 von 5 Sternen|286
Intel Core i5-7600K Prozessor der 7. Generation (bis zu 4.20 GHz mit Intel Turbo-Boost-Technik 2.0, 6 MB Intel Smart-Cache)|von|Intel|EUR 205,00|KOSTENFREIE Lieferung|Andere Angebote|EUR 198,09|(50 gebrauchte und neue Artikel)|Neueres Modell dieses Artikels anzeigen|4,2 von 5 Sternen|133
Intel Pentium G4560 3,50GHz Boxed CPU|von|Intel|EUR 56,99|Prime|Kostenlose Lieferung möglich.|Nur noch 12 Stück auf Lager - jetzt bestellen.|Andere Angebote|EUR 51,00|(54 neue Artikel)|4,5 von 5 Sternen|38
Intel Celeron Prozessor G3900 (2,80 GHz, 2 MB Intel Smart-Cache)|von|Intel|EUR 34,99|Prime|Kostenlose Lieferung möglich.|Andere Angebote|EUR 25,64|(63 gebrauchte und neue Artikel)|4,4 von 5 Sternen|28

现在我的问题是:如何从中获取数据?我在找名字和价钱。比如说:

Intel Core i7-8700K Processor | EUR 342,45
AMD Ryzen 5 1600 Prozessor | EUR 144,90

你明白要点了。这有可能吗?我找不到。 多谢了!你知道吗


Tags: eurprimeamdintelvonghzartikelneue
1条回答
网友
1楼 · 发布于 2024-06-26 00:01:00

您可以将字符串列表传递给^{}模块,然后只获取每行的第一个和第四个条目。根据左括号拆分第一个条目:

cr = csv.reader(a,delimiter="|")
for row in cr:
    print("{} | {}".format(row[0].split("(")[0].strip(),row[3]))

数据结果:

Intel Core i7-8700K Processor | EUR 342,45
AMD Ryzen 5 1600 Prozessor | EUR 144,90
AMD FX-8350 FD8350FRHKBOX Prozessor | EUR 73,99
Intel Core i5-7500 Prozessor | EUR 184,99
AMD Ryzen 5 1400 Prozessor | EUR 117,90
Intel Pentium G4400 BX80662G4400 Prozessor | EUR 49,99
Intel Core i9-7900X Prozessor, der X-Serie | EUR 875,99
Intel Core i7–7700 K 4,2 GHz QuadCore 8 MB Cache Prozessor | EUR 289,00
Intel Core i5-6400 2,7GHz Boxed CPU | EUR 160,99
AMD FD4300WMHKBOX Quad-Core Prozessor | EUR 49,99
AMD Ryzen 7 1700 Prozessor mit Wraith-Spire-LED-Kühler | EUR 207,90
Intel Core i5-7600K Prozessor der 7. Generation | EUR 205,00
Intel Pentium G4560 3,50GHz Boxed CPU | EUR 56,99
Intel Celeron Prozessor G3900 | EUR 34,99

另一种仅使用csv writer进行输出的方法(但不“分隔”字段,分隔符前后不添加空格):

cr = csv.reader(a,delimiter="|")
cw = csv.writer(sys.stdout,delimiter="|")
cw.writerows([row[0].split("(")[0].strip(),row[3]] for row in cr)

sys.stdout也可以是打开的文件句柄。你知道吗

最“复杂”的部分是:

row[0].split("(")[0].strip()

这只是取第一列,根据括号拆分,取第一部分(左部分),去掉前后空格。你知道吗

相关问题 更多 >