我正在亚马逊上抓取产品详细信息页面文本,但我以项目符号列表的形式返回数据。我想将数据添加为其他抓取数据旁边的列。
正在运行的代码的一部分
def get_availability(soup):
try:
available = soup.find("div", attrs={'id':'availability'})
available = available.find("span").string.strip()
except AttributeError:
available = "Not Available"
return available
我像上面一样模仿了这部分代码,但它没有按预期工作
# Function to extract Product Details
def get_pd(soup):
try:
pd = soup.find("div", attrs={'id':'detailBullets_feature_div'}).text.strip()
pd = pd.find("span").string.strip()
except AttributeError:
pd = ""
return pd
当我删除这部分代码时
pd = pd.find("span").string.strip()
我得到了项目符号列表,但结果不是我想要的。结果应该并排放置,而不是垂直放置。
你可以尝试:
import re
import requests
from bs4 import BeautifulSoup
url = "https://www.amazon.nl/-/en/Multivitamins-minerals-high-dosage-containing/dp/B075RCPZ3P/ref=sr_1_6?crid=1WFDIDCT1PXE8&dib=eyJ2IjoiMSJ9.Pv8fNYUtGuBYdebOTisLFgv9KuLU_Pb1FMnnf4Q8FMLHlQivImbxYNVwbRBJ2YOA6M-zlNIHqgWqDzMZfhYePmXlUI15lwwP6VQTH7egA0p_Maz2vsBzdbYZCpZmEZX1O2NaH2B50BXlPQfmQyn_X3Zy_qiZ4TJRKc9rv30-oUhlPDIxXKWa_2Sr1t7BR7hl3Ks2zQd0ZmaBIX3w2M2o183BmuHvi9haYAdE916Rjz8VK7xBbRyW5VhaqJlYpO1iEsn5OhL9HTbBaqTKQ4eZXEUam3py0rWWnWBWb9B7b54.b_p-s2SKiuGSEs7A04s5RAxdHAwHKRMbXPi3OPg-leM&dib_tag=se&keywords=vitamine&qid=1726325837&sprefix=vitamine%2Caps%2C225&sr=8-6"
headers = {
"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:130.0) Gecko/20100101 Firefox/130.0"
}
soup = BeautifulSoup(requests.get(url, headers=headers).content, "html.parser")
details = soup.select(
'h2:-soup-contains("Product details") ~ div > ul, h2:-soup-contains("Product details") ~ ul'
)
data = {"title": soup.title.text}
for ul in details:
for li in ul.find_all("li", recursive=False):
t = re.sub(
r"\s{2,}", " ", li.text.strip().replace("\u200f", "").replace("\u200e", "")
)
k, v = t.split(":", maxsplit=1)
data[k] = v
df = pd.DataFrame([data])
print(df)
打印:
标题 | 已被制造商停产 | 产品尺寸 | 首次可用日期 | 制造商 | ASIN | 制造商参考 | 原产国 | 保证软件更新直至 | 畅销排行榜 | 顾客评价 |
---|---|---|---|---|---|---|---|---|---|---|
高剂量多种维生素和矿物质 - 450 片含有所有 A-Z 维生素 - 钙、生物素、硒、锌、叶酸、维生素 A、B1、B2、B3、B5、B6、B12、C、D3、E:Amazon.nl:健康与个人护理 | 没有 | 6 x 6 x 10 厘米; 225克 | 2020 年 6 月 5 日 | 荣耀感觉 | B075RCPZ3P | gf-multiv-450 | 德国 | 未知 | 健康与个人护理中第 22 位(查看健康与个人护理中前 100 名) 多种维生素营养补充剂中第 1 位 | 4.4 4.4 颗星,最多 5 颗星 18,107 评分 |