【问题标题】:How to extract all data having same class using python如何使用python提取具有相同类的所有数据
【发布时间】:2020-06-26 13:48:12
【问题描述】:

我需要找到所有标题数据和库存编号。我写了一个代码,当我使用 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()

【问题讨论】:

  • 它显示的错误是什么?

标签: python web-scraping beautifulsoup data-mining


【解决方案1】:

试试:

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]}')

【讨论】:

  • @a 线索谢谢,但它显示一些值超过 1 次。你也可以解决这个问题吗?
  • 我已经编辑了我的原始帖子;您可以将 findAll() 应用于您感兴趣的 div 类,而不是循环遍历每个 div 实例
  • 比你这么多兄弟的帮助,但如果你不介意,如果你看到输出,它会显示标题与其他股票编号,而不是那个标题的确切内容
  • 您能否将输出存储到 csv 文件中?
  • 要写入 csv 库,请使用 csv 库:docs.python.org/3/library/csv.html(参见链接页面上的示例)
猜你喜欢
  • 1970-01-01
  • 2021-05-23
  • 1970-01-01
  • 2021-04-07
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多