首页 > 解决方案 > 使用 python 和使用循环或 if 命令进行 Web 抓取

问题描述

我正在网上抓取此网页的信息https://www.bundesbank.de/en/bundesbank/research/research-centre/people/people-738992。 该网页有不同的版块,例如研究负责人,该版块有 12 位研究人员,当您单击一个选项时,您会转到每个研究人员的网页。到目前为止,这是我的代码,我可以网络抓取每个研究人员的内容,但是有没有办法让一个代码(而不是 12 个)来网络抓取研究部门负责人的所有研究人员的信息?我不确定使用“循环”、“while 循环”或“if”命令是否更好地进行网络抓取

from selenium import webdriver
mozilla_path = r"C:\Users\ivrav\Python38\geckodriver.exe"
driver = webdriver.Firefox()
driver.get("https://www.bundesbank.de/en/bundesbank/research/research-centre/people/people-738992")
driver.find_element_by_xpath("""//*[@id="top"]/div/div[3]/div/div/div/div/main/div/div[1]/div/div[1]/nav/ul/li/div/a""").click()
Researcher =driver.find_element_by_class_name("main")

任何帮助/建议将不胜感激。提前致谢!

标签: pythonweb-scraping

解决方案


要获取研究中心的信息,请尝试将最后两行更改为:

researchers = driver.find_elements_by_xpath('//h2[.="Research Assistants"]//preceding-sibling::div[@class="collection mb-4"]//a[@class="collection__link"]')
for researcher in researchers:
        print(researcher.text, researcher.get_attribute('href'))

输出:

Kartik Anand https://www.bundesbank.de/en/kartik-anand
Sven Blank https://www.bundesbank.de/en/sven-blank
Ana-Maria Dumitru https://www.bundesbank.de/en/ana-maria-dumitru

等等

您现在可以按照每个研究人员的链接到相应的页面,并像往常一样抓取该页面。


推荐阅读