import requests
from bs4 import BeautifulSoup
import csv
def Main(url):
r = requests.get(url)
soup = BeautifulSoup(r.content, 'html.parser')
names = [item.text for item in soup.findAll(
"h3", class_="s-item__title")]
prices = [item.text for item in soup.findAll(
"span", class_="s-item__price")]
urls = [item.get("href")
for item in soup.findAll("a", class_="s-item__link")]
with open("result.csv", 'w', newline="", encoding="UTF-8") as f:
wrriter = csv.writer(f)
wrriter.writerow(["Name", "Price", "Url"])
data = zip(names, prices, urls)
wrriter.writerows(data)
Main("https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=pc&_sacat=0")
Вывод: просмотр в режиме онлайн
Примечание. Вы использовали soup.find_all(class_='s-item__wrapper clearfix')
вместо soup.find_all("div", class_='s-item__wrapper clearfix')
Вот почему вы получили AttributeError
А что касается UnicodeEncodeError
, я полагаю, что вы используете Windows
, где кодировкой по умолчанию является cp1252
, которая не сможет прочитать Unicode
, например, ?.
try:
print(\u2714)
Вывод должен быть: ✔ но ваша система выдаст UnicodeEncodeError
.
Таким образом, у вас есть 2 варианта или изменить вашу систему locale
настроек,
, открыть cmd.exe , затем набрать chcp
, я верю, что вы получите 437
, что составляет United States
.
Теперь вам нужно изменить его на chcp 65001
, что является UTF-8
поддержкой. Ref ..
или для кодирования csv
с utf-8
с encoding="UTF-8"