如何使用python selenium在页面上打开不同的链接以进行抓取?

2024-10-03 19:23:08 发布

您现在位置:Python中文网/ 问答频道 /正文

enter image description here我有下面的代码,用于打开一个页面的“新建”链接,该页面包含我想要刮取的数据(如屏幕截图所示)。它工作正常,实际上点击了链接,但我得到的汤仍然是“流行”下的内容(如屏幕截图)

我做错了什么

driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get("https://www.homeworkmarket.com/fields/business-finance")
time.sleep(2)
doc = driver.find_elements_by_xpath('//*[@id="wrapper"]/div[2]/div[1]/div[1]/div[3]/div[1]/ul/li[1]/a')[0]
doc.click()
time.sleep(10)
page = driver.page_source
soup = BeautifulSoup(page, 'html.parser')

刮取的其余代码href链接:

question_links = soup.find_all(class_='css-e5w42e')
final_links = []
for link in question_links:
    if 'href' in link.attrs:
        link = 'https://www.homeworkmarket.com' + str(link.attrs['href'])
        print(link)
        final_links.append(link)

Tags: 代码httpsdivcom屏幕time链接www
2条回答

这不会打开新页面,只会扩展现有页面上的某些区域。
页面源在可视化扩展之前就包含了这些数据,这就是为什么单击该按钮仍然通过执行

page = driver.page_source

您无需单击“新建”,因为HTML DOM中已存在元素:

driver = webdriver.Chrome(ChromeDriverManager().install())
driver.maximize_window()
driver.implicitly_wait(30)
driver.get("https://www.homeworkmarket.com/fields/business-finance")

for link in driver.find_elements(By.XPATH, "(*//a[text()='New']/ancestor::div[contains(@class,'css')])[3]/following-sibling::div/section/descendant::a[contains(@class,'css')]"):
    print(link.get_attribute('href'))

最初的80个链接来自流行标签,其余的应该来自新标签

相关问题 更多 >