1 回答

TA貢獻1799條經驗 獲得超9個贊
您的第一個問題是該行中的 CSS 類name = item.find("div", attrs={"class": "p13n-sc-truncated"}應該是p13n-sc-truncate. 您的第二個問題是您用來查找項目的類過于具體(對于第一項)。我發現用 class 搜索列表項更有用zg-item-immersion。
如果只想列出前 10 個項目,則可以將[:10]切片說明符添加到主 for 循環中。把它們放在一起,我們得到:
import requests
from bs4 import BeautifulSoup
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/601.3.9 (KHTML, like Gecko) Version/9.0.2 Safari/601.3.9"
}
url_amazon = (
"https://www.amazon.co.uk/Best-Sellers-Electronics/zgbs/electronics"
)
response = requests.get(url_amazon, headers=headers)
soup = BeautifulSoup(response.content, "lxml")
print(soup.prettify())
title = soup.find(
"h1", class_="a-size-large a-spacing-medium zg-margin-left-15 a-text-bold"
).text
print(title)
titles = []
for item in soup.findAll("li", attrs={"class": "zg-item-immersion"})[:10]:
name = item.find("div", attrs={"class": "p13n-sc-truncate"})
if name is not None:
titles.append(name.text.strip())
else:
titles.append("unknown title")
print(len(titles))
for i in titles:
print(i)
我用來name.text.strip()刪除換行符和多余的空格。
需要注意的是,這個腳本比較脆弱,因為亞馬遜可以隨時更改布局和類名。
添加回答
舉報