Python Selenium网页爬虫多页分页爬取功能实现求助
分页爬取实现思路
- 目标站点分页通过url参数
cpage控制,页码从1开始依次递增,最简单的实现方式是直接遍历拼接不同页码的url爬取 - 也可以通过定位「下一页」按钮点击跳转,不过直接修改url参数的实现更稳定,不容易出现点击失效的问题
修正后的完整可运行代码
from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager import pandas as pd import time # 自动管理chromedriver,不需要手动指定路径 driver = webdriver.Chrome(ChromeDriverManager().install()) base_url = 'https://www.dailydac.com/chapter-11-bankruptcy-alert-system/?cpage={}' # 初始化存储数据的列表 all_names = [] all_dates = [] # 这里示例先爬前10页,你可以根据站点实际总页数修改,也可以新增逻辑定位底部分页栏的最大页码自动取值 total_page = 10 for page in range(1, total_page + 1): # 跳转对应分页 driver.get(base_url.format(page)) # 等待页面加载完成,可根据自身网络情况调整时长 time.sleep(2) # 获取当前页的公司名称和日期 company_names = driver.find_elements_by_xpath('/html/body/div[1]/div[3]/div[2]/section/section/table/tbody/tr/td[4]') dates = driver.find_elements_by_xpath('/html/body/div[1]/div[3]/div[2]/section/section/table/tbody/tr/td[1]') # 把当前页数据加入总列表 for name in company_names: all_names.append(name.text) for date in dates: all_dates.append(date.text) # 汇总为DataFrame df = pd.DataFrame({ '公司名称': all_names, '日期': all_dates }) print(df) # 可按需保存为csv文件 # df.to_csv('bankruptcy_data.csv', index=False, encoding='utf-8-sig') driver.quit()
注意事项
- 如需自动获取总页数,可新增逻辑定位页面底部分页栏的最大页码元素取值,不需要手动填写
total_page - 等待页面加载的逻辑可以改用Selenium显式等待,相比固定sleep的执行效率更高
- 可以适当调大爬取间隔,避免请求频率过高被站点限制访问
- 原代码存在错误赋值问题:
data['Date_'] = Date是把元素对象直接存入了DataFrame,修正后改为直接存储提取的文本内容
内容的提问来源于stack exchange,提问作者AshishTalgotra
相关产品推荐
相关产品推荐

