Python 抓取和打印数据只是每页的第一个条目,但我需要所有数据
我有一个问题,我刮的代码只是打印出每页的第一个条目。我需要的是,所有的数据从所有三个网页的网站得到刮,并添加到列表'信息列表' 我假设的问题是声明“CAR_INFO=0”,但我不确定如何解决它。任何提示或推动正确的方向将不胜感激 我的代码: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
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
才会在外部循环中处理。这可能会导致您的问题。这可能会帮助您:谢谢您的帮助!这解决了我的问题