Как извлечь все данные одного класса, используя python - PullRequest
0 голосов
/ 15 марта 2020

мне нужно найти все данные о названии и номер товара Я написал код, и он хорошо работает с одним элементом, когда я использую метод find_all, он показывает ошибку, пожалуйста, обратите внимание на мой код и подскажите, как мне с этим справиться. спасибо!

вот мой код:

import requests
from bs4 import BeautifulSoup
#import pandas as pd
#import numpy as
import csv

def get_page(url):
    response = requests.get(url)
    if not response.ok:
        print('server responded:', response.status_code)
    else:
        soup = BeautifulSoup(response.text, 'html.parser') # 1. html , 2. parser
    return soup
def get_detail_page(soup):
     title = soup.find_all('div',class_="vehicle-location-name mts bold",id=False).text
     print(title)
     stock = soup.find_all('div',class_="text-lightgray",id=False).find('span').text
     print(stock)
def main():
    url = "https://www.superbrightleds.com/vehicle/2002-acura-cl-vehicle-led-lights?make=1&model=554&year=2002"
    get_detail_page(get_page(url))

if __name__ == '__main__':
    main()

1 Ответ

0 голосов
/ 15 марта 2020

Попробуйте:

def get_detail_page(soup):
    titles = soup.findAll('div', attrs={"class": "vehicle-location-name mts bold"})
    stocks = soup.findAll('div', attrs={"class": "text-lightgray"})

    title = [title.get_text() for title in titles if title]
    stock = [stock.get_text() for stock in stocks if stock and 'Stock #' in str(stock)]

    for idx in range(len(stock)):
        print(f'{title[idx]}\n\t{stock[idx]}')
...