首页 > 解决方案 > 如何使用 python 操作 html(或 javascript)来抓取数据条目

问题描述

我正在尝试使用 Python 中的 beautifulsoup从该网站上获取大学学术排名。目前,我可以毫无问题地抓取前 30 个条目,但是,其余条目需要我每次单击下一页。没有显示所有条目的选项。

当我单击条目页面时,URL 不会改变,所以我想这些条目正在被 javascript (?) 操纵,但是,当我检查源代码时,我找不到操纵它的方法。不可否认,我在这里是个业余爱好者。

如何使用 python 来操作这个网页;要么显示所有条目,要么遍历每个页面以提取完整的数据集?

更新 - 解决方案

感谢@j_carlson 提供的链接,我能够制定出我的解决方案:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait

driver = webdriver.Chrome('./chromedriver')
driver.get('http://www.shanghairanking.com/rankings/arwu/2021')
for page in range(npages+1)
    html = driver.page_source
    soup = BeautifulSoup(html, 'html.parser')
    # Extract what I want here
    next_button_class = 'ant-pagination-next'
    driver.find_element_by_class_name(next_button_class).click()

它只是使用 selenium 来“单击”类为“ant-pagination-next”的下一页按钮(我通过使用 chrome 的检查元素函数找到了这个),然后遍历每个页面,每次都提取我想要的数据。

标签: javascriptpythonhtml

解决方案


推荐阅读