【发布时间】:2022-11-26 14:13:39
【问题描述】:
所以我正在抓取一个[网站][1],我想 根据这些 URL 检索网页并将每个网页转换为 beautifulsoup 对象
检索汽车制造年份、发动机、价格、经销商信息(如果有)以及访问详细汽车信息的 URL (href)。
当我运行代码时,我收到错误“ValueError:没有足够的值来解压(预期 4,得到 3)”,当我删除一个值而不是制造商、型号、年份和价格时,我将其更改为制造商、型号和price 并出现另一个错误“太多值无法解压(预期 3)”
import requests
import pandas as pd
from bs4 import BeautifulSoup
url = "https://jammer.ie/used-cars?page={}&per-page=12"
all_data = []
for page in range(1, 3): # <-- increase number of pages here
soup = BeautifulSoup(requests.get(url.format(page)).text, "html.parser")
for car in soup.select(".car"):
info = car.select_one(".top-info").get_text(strip=True, separator="|")
make, model, year, price = info.split("|")
dealer_name = car.select_one(".dealer-name h6").get_text(
strip=True, separator=" "
)
address = car.select_one(".address").get_text(strip=True)
features = {}
for feature in car.select(".car--features li"):
k = feature.img["src"].split("/")[-1].split(".")[0]
v = feature.span.text
features[f"feature_{k}"] = v
all_data.append(
{
"make": make,
"model": model,
"year": year,
"price": price,
"dealer_name": dealer_name,
"address": address,
"url": "https://jammer.ie"
+ car.select_one("a[href*=vehicle]")["href"],
**features,
}
)
df = pd.DataFrame(all_data)
# prints sample data to screen:
print(df.tail().to_markdown(index=False))
# saves all data to CSV
df.to_csv('data.csv', index=False)
【问题讨论】:
标签: python pandas web-scraping beautifulsoup request