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

Python 抓取和打印数据只是每页的第一个条目,但我需要所有数据,python,selenium,screen-scraping,Python,Selenium,Screen Scraping,我有一个问题,我刮的代码只是打印出每页的第一个条目。我需要的是,所有的数据从所有三个网页的网站得到刮,并添加到列表'信息列表' 我假设的问题是声明“CAR_INFO=0”,但我不确定如何解决它。任何提示或推动正确的方向将不胜感激 我的代码: import time from selenium import webdriver from bs4 import BeautifulSoup import re DRIVER_PATH = r"C:\Users\salmou\Downlo

我有一个问题,我刮的代码只是打印出每页的第一个条目。我需要的是,所有的数据从所有三个网页的网站得到刮,并添加到列表'信息列表'

我假设的问题是声明“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()

我看到您有两个循环:外部带
I
和内部带
e
,但我在循环中看不到任何对当前
I
值的引用。因此,看起来您正在执行相同的操作3次。

此外,在内部循环中定义和计算的
rawString
仅在外部循环中处理。因此,只有在内部循环中接收到的最新值
rawString
才会在外部循环中处理。这可能会导致您的问题。

这可能会帮助您:谢谢您的帮助!这解决了我的问题