【发布时间】:2020-07-23 20:52:33
【问题描述】:
在过去的几天里,我使用 selenium 构建了一个非常简单的 python webscraper,它可以抓取某个汽车列表网站并收集有关特定品牌和型号汽车的列表数据。但是,我在引用 selenium 方法中的方法时遇到了问题。
class crawler:
def __init__(self, make, model):
self.car_make = make
self.car_model = model
self.driver = webdriver.Chrome('C:/Users/ecc/Downloads/chromedriver/chromedriver.exe')
self.driver.get("car-listing-website")
sleep(2)
self.driver.find_element_by_xpath("//select[@id='carPickerUsed_makerSelect']").click()
sleep(1)
self.driver.find_element_by_xpath("//option[contains(text(), {self.car_make}]").click()
self.driver.find_element_by_xpath("//select[@id='carPickerUsed_modelSelect']").click()
sleep(1)
self.driver.find_element_by_xpath("//option[contains(text(), {self.car_model})]").click()
我遇到的问题是在最后几行代码中引用了 self.car_make 和 self.car_model 值:
self.driver.find_element_by_xpath("//option[contains(text(), {self.car_make}]").click()
self.driver.find_element_by_xpath("//select[@id='carPickerUsed_modelSelect']").click()
sleep(1)
self.driver.find_element_by_xpath("//option[contains(text(), {self.car_model})]").click()
运行后,它说这些不是有效的 Xpath 表达式。我想我的问题是,这甚至可以在硒中完成吗?如果是这样,只是语法错误的问题吗?
就上下文而言,目标是能够使用 crawler() 实例来抓取网站上任何类型的品牌和型号,而无需手动更新代码来搜索那些不同的品牌和型号。例如,理想情况下,您可以使用以下代码获取 Ford Mustangs 的列表数据:
crawler('Ford','Mustang')
【问题讨论】:
标签: python selenium web-scraping automation webdriver