抓取和打印的数据只是每页的第一个条目,但我需要所有数据

Data getting scraped and printed is only the first entry of each page but I need all the data

我遇到一个问题,我抓取的代码只打印出每页的第一个条目。我需要的是网站所有三个页面的所有数据都被抓取并添加到列表 'infoList'.

我认为是声明 'CAR_INFO = 0' 的问题,但我不确定如何解决它。任何提示或正确方向的推动将不胜感激。

我的代码:

import time
from selenium import webdriver 
from bs4 import BeautifulSoup
import re


DRIVER_PATH = r"C:\Users\salmou\Downloads\chromedriver_win32\chromedriver.exe"
URL = "https://vancouver.craigslist.org/"

browser = webdriver.Chrome(DRIVER_PATH)
browser.get(URL)

time.sleep(4)

SEARCH_TERM = "Honda"
search = browser.find_element_by_css_selector("#query")
search.send_keys(SEARCH_TERM)
search.send_keys(u'\ue007')


class ScrapedData:
    carInfo = ""
    
    def __init__(self, carInfo):
        self.carInfo = carInfo

    def scrapedCarInfo(self):
        print(SEARCH_TERM + " information: " + self.carInfo)
        print("****")
        

infoList = []


for i in range(0,3):
    content = browser.find_elements_by_css_selector(".hdrlnk")
    for e in content:
        start = e.get_attribute("innerHTML")
        soup= BeautifulSoup(start, features=("lxml"))
        rawString = soup.get_text().strip()
        # print(soup.get_text())
        # print("*****************************************************")
    button = browser.find_element_by_css_selector(".next")
    button.click()
    time.sleep(3)
    
    rawString = re.sub(r"[\n\t]*", "", rawString)

    # Replace two or more consecutive empty spaces with '*'

    rawString = re.sub('[ ]{2,}', '*', rawString)
    
    infoArray = rawString.split('*')
        
    CAR_INFO = 0
    
    carInfo = infoArray[CAR_INFO]
    
    
    objInfo = ScrapedData(carInfo)
    infoList.append(objInfo)


for info in infoList:
    info.scrapedCarInfo()

我看到您有 2 个循环:外部循环 i 和内部循环 e,但我在循环中看不到任何对当前 i 值的引用。所以看起来你正在执行 3 次相同的操作。
此外,在内部循环中定义和评估的 rawString 仅在外部循环中处理。所以在外循环中只处理内循环中收到的最新值 rawString 。这可能会导致您的问题。