Python编程—Ajax数据爬取
由于原始代码中使用的requests
库不支持Ajax动态加载的数据,我们需要使用支持JavaScript渲染的工具。在Python中,Selenium
和Splash
是两个常用的选择。以下是使用Selenium
和Chrome
浏览器进行数据爬取的示例代码:
首先,安装必要的库:
pip install selenium
确保你有ChromeDriver,并且它在你的系统PATH中。你可以从ChromeDriver - WebDriver for Chrome下载对应版本的ChromeDriver。
接下来,使用Selenium和ChromeDriver来启动浏览器,并进行数据爬取:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
# 初始化ChromeDriver
driver_path = 'path/to/your/chromedriver'
driver = webdriver.Chrome(executable_path=driver_path)
# 打开目标网页
url = 'http://example.com'
driver.get(url)
# 等待数据加载完成,这里的'loadMoreButton'是加载更多数据的按钮ID
wait = WebDriverWait(driver, 20)
wait.until(EC.element_to_be_clickable((By.ID, 'loadMoreButton'))).click()
# 假设数据是以JSON格式返回的,我们可以直接从网页的JavaScript源代码中提取
time.sleep(5) # 等待数据加载,可以通过更灵活的方式监测数据是否加载完成
html = driver.page_source
# 通过正则表达式或者HTML解析库(如BeautifulSoup)来提取数据
# 这里需要根据实际的HTML结构来编写正确的提取逻辑
# 清理工作
driver.quit()
请注意,你需要根据实际的网页结构调整正则表达式或HTML解析库的使用方式。此外,为了确保数据爬取的稳定性和效率,可能需要添加更多的等待条件和错误处理。
评论已关闭