【问题标题】:Problem with scraping and saving data using Xpath and Selenium使用 Xpath 和 Selenium 抓取和保存数据的问题
【发布时间】:2020-04-19 20:08:52
【问题描述】:

所以我试图抓取有关速率、级别、持续时间、认证的信息并将它们保存在 csv 文件中。首先,我不知道我是否做得对,因为我是 Selenium 的新手,我不知道如何将它正确保存在一个 csv 文件中。所有信息均来自本站:here is the link。我试图使用下面的代码,但它不起作用:

driver=webdriver.Firefox(executable_path="/usr/bin/geckodriver")

driver.get('https://alison.com/course/global-islamic-finance-and-banking')

rate = driver.find_element(By.XPATH, '//div[contains(@class,"course-banner")]//li[2]//div[2]')

level = driver.find_element(By.XPATH, '//span[contains(text(),"Academic - Third Level - Level 1")]')

duration = driver.find_element(By.XPATH, '//div[contains(@class,"course-brief-container")]//div[contains(@class,"course-brief")]//li[1]//div[2]')

certification = driver.find_element(By.XPATH, '//div[contains(@class,"course-brief-container")]//div[contains(@class,"course-brief")]//li[3]//div[2]')

我想抓取这些数据并保存在 csv 文件中。

你知道如何这个东西吗?感谢您的帮助。

【问题讨论】:

  • 正确的动词是 scrape 而不是 scrap ;) 另外,您在抓取或保存到 CSV 时有什么问题?
  • 当我从这个网站获得费率、等级、持续时间、认证并且我可以在终端打印它们我不知道如何将这些信息保存在 csv 文件中
  • 你搜索过专门抓取网站的python库吗?我想知道你为什么要使用 Selenium 来完成这项任务。如果您需要单击目标网站上的按钮,则可以使用它。
  • 是的,我需要点击目标网站上的按钮。

标签: python selenium xpath web-scraping


【解决方案1】:

您需要输入要从中提取文本的元素的确切 xpath。在您的代码中,xpath 与目标元素并不完全相同。您可以尝试如下。

请注意,汇率值是组合文本,您必须从中删除 Rated 文本。

driver.get("https://alison.com/course/global-islamic-finance-and-banking")
driver.maximize_window()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//ul[@class='course-banner--info']/li[2]/div[2]/h4")))
rate =  driver.find_element(By.XPATH, "//ul[@class='course-banner--info']/li[2]/div[2]/h4").text
level = driver.find_element(By.XPATH, "//ul[@class='course-banner--info']/li[3]/a/div[2]/span").text
duration = driver.find_element(By.XPATH, "//li[@class='course-icons']/div[2]/h3[contains(text(),'Duration')]/following-sibling::span").text
certification = driver.find_element(By.XPATH, "//li[@class='course-icons']/div[2]/h3[contains(text(),'Certification')]/following-sibling::span").text

print(rate)
print(level)
print(duration)
print(certification)

【讨论】:

  • 谢谢!我还有一个问题。你知道如何将结果保存在 csv 文件中吗?
  • @sid9715 csv 是一个文本文件,您可以事先创建它并附加新数据,如此处所示。 thispointer.com/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-04
  • 2016-10-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多