Парсер выдает пустой запрос
пытаюсь запарсить с сайта марку автомобиля, год и цену, почему-то сохраняет пустой запрос. В чем может быть дело?
import requests
from bs4 import BeautifulSoup as bs
import pandas as pd
URL_TEMPLATE = "https://cars.av.by/bmw"
r = requests.get(URL_TEMPLATE)
FILE_NAME = "test.csv"
def parse(url = URL_TEMPLATE):
result_list = {'mark': [],'year': [], 'price': []}
r = requests.get(url)
if (r.status_code == 403):
print("Access denied")
soup = bs(r.text, "html.parser")
car_mark = soup.find_all('span', class_='link-text')
car_year = soup.find_all('div', class_='listing-item__params')
car_price = soup.find_all('div', class_='listing-item__price')
for mark in car_mark:
result_list['mark'].append(mark.text)
for year in car_year:
result_list['year'].append(year.text)
for price in car_price:
result_list['price'].append(price.text)
return result_list
df = pd.DataFrame(data=parse())
df.to_csv(FILE_NAME)
Ответы (2 шт):
Автор решения: skaru
→ Ссылка
у вас парсинг данных и его запись в CSV файл происходит для каждого элемента отдельно, вот исправленный код,попробуйте
import requests
from bs4 import BeautifulSoup as bs
import pandas as pd
URL_TEMPLATE = "https://cars.av.by/bmw"
r = requests.get(URL_TEMPLATE)
FILE_NAME = "test.csv"
def parse(url=URL_TEMPLATE):
result_list = {'mark': [], 'year': [], 'price': []}
r = requests.get(url)
if r.status_code == 403:
print("Access denied")
soup = bs(r.text, "html.parser")
car_mark = soup.find_all('span', class_='link-text')
car_year = soup.find_all('div', class_='listing-item__params')
car_price = soup.find_all('div', class_='listing-item__price')
for mark in car_mark:
result_list['mark'].append(mark.text)
for year in car_year:
result_list['year'].append(year.text)
for price in car_price:
result_list['price'].append(price.text)
return result_list
df = pd.DataFrame(data=parse())
df.to_csv(FILE_NAME, index=False)`
Автор решения: Сергей Ш
→ Ссылка
import requests
from bs4 import BeautifulSoup as bs
import pandas as pd
URL_TEMPLATE = "https://cars.av.by/bmw"
FILE_NAME = "test.csv"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0'}
def parse(url=URL_TEMPLATE):
result_list = {}
r = requests.get(url, headers=headers)
if not r.ok:
# if r.status_code == 403 or r.status_code == 423:
print("Access denied")
return {"Access denied": []}
soup = bs(r.text, "html.parser")
car_mark = soup.find_all('span', class_='link-text')
result_list['mark'] = [x.text for x in car_mark]
return result_list
df = pd.DataFrame(parse())
df.to_csv(FILE_NAME)