当前位置: 首页 > news >正文

python 写自动点击爬取数据

今天来点不一样的!哥们

提示: 这里只是用于自己学习的 ,请勿用违法地方
效果图
在这里插入图片描述
会进行点击下一页 进行抓取
需要其他操作也可以自己写


文章目录

  • 今天来点不一样的!哥们
  • 前言
  • 一、上代码?
  • 总结


前言

爬虫是指通过编程自动化地获取互联网上的信息的过程。在Python中,有许多强大的库和框架可用于实现爬虫,其中最常用的是Beautiful Soup和Requests库。

在开始编写爬虫之前,有一些重要的考虑事项:

合法性和道德性: 确保你的爬虫活动是合法的,并遵守网站的使用规定。爬虫不应该违反任何法律或侵犯隐私权。

robots.txt 文件: 在爬取网站之前,检查网站的robots.txt文件,这是网站所有者用来指导爬虫的文件。尊重这些规则以避免潜在的法律问题。

频率和速率: 控制爬虫的访问速率,以防止对服务器造成过大的负担。设置适当的延迟和间隔,以模拟真实用户的行为。

HTML基础: 了解基本的HTML结构和标签,因为大多数爬虫任务都涉及到解析HTML文档。


提示:以下是本篇文章正文内容,下面案例可供参考

一、上代码?

import timefrom bs4 import BeautifulSoup
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import Byurl = "https://ref.cnki.net/REF/AdvSearch/Index?colName=%E8%A2%AB%E5%BC%95%E4%B8%BB%E9%A2%98&colValue=%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%91%E5%AD%A6&isJump=true#toolbarDiv"# 使用Selenium进行动态加载
driver = webdriver.Chrome()
driver.get(url)def scrape_page():# 等待一些时间,确保页面加载完成time.sleep(5)# 获取当前页面高度page_height = driver.execute_script("return Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight);")# 设置滚动步长scroll_step = 500# 模拟滚动for i in range(0, page_height, scroll_step):driver.execute_script("window.scrollTo(0, {});".format(i))time.sleep(1)  # 等待一些时间,确保内容加载# 获取滚动后的页面源代码html = driver.page_source# 使用BeautifulSoup解析页面内容soup = BeautifulSoup(html, 'html.parser')# 查找id为listContWrapper的div元素list_cont_wrapper = soup.find('div', {'id': 'listContWrapper'})# 如果找到了listContWrapper元素if list_cont_wrapper:# 在listContWrapper内部查找listCont和tablelist_cont = list_cont_wrapper.find('div', {'class': 'listCont'})table_elements = list_cont_wrapper.find_all('table')# 处理listCont的内容,根据实际情况进行调整选择器if list_cont:list_cont_data = list_cont.get_text(strip=True)print("listCont数据:", list_cont_data)# 遍历每个表格元素for table_element in table_elements:# 提取表格中的数据,可以根据实际情况进一步调整选择器rows = table_element.find_all('tr')for row in rows:# 提取每行中的单元格数据cells = row.find_all(['td', 'th'])row_data = [cell.get_text(strip=True) for cell in cells]print("表格行数据:", row_data)else:print("未找到id为listContWrapper的div元素")# 初始抓取
scrape_page()# 循环点击下一页按钮,直到没有下一页为止
while True:try:# 找到下一页按钮并点击next_page_button = driver.find_element(By.XPATH, '//a[@class="next"]')next_page_button.click()# 继续抓取下一页scrape_page()except NoSuchElementException:print("没有找到下一页按钮,退出循环。")break
# 关闭驱动
driver.quit()

总结

我这个是抓取然后进行点击然后又进行抓取,还挺好玩,
要弄其他的都是这种格式模板
啊哈~~~

相关文章:

  • 2024年Mac专用投屏工具AirServer 7 .27 for Mac中文版
  • MySQL第三战:CRUD,函数1以及unionunion all
  • 软件测试|深入学习 Docker Logs
  • 阿里云服务器端口PPTP 1723放行教程
  • unity C# 中通俗易懂LINQ使用案例
  • AI:118-基于深度学习的法庭口译实时翻译
  • Linux系统使用超详细(八)~磁盘管理
  • Spring——Spring AOP1(代理模式Proxy)
  • 基于 ESP32-C3 开启 Flash 加密和安全启动并进行 OTA 测试
  • 玩转贝启科技BQ3588C开源鸿蒙系统开发板 —— 开发板详情与规格
  • Reids原理及简单命令
  • 三叠云流程制造ERP:构建智慧工厂,实现高效生产管理
  • 编程笔记 html5cssjs 022 HTML表单概要
  • 深度解析qt核心机制:信号槽的多线程行为与对象的线程依附性
  • 针对人工智能的攻击并发布策略和建议
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • angular组件开发
  • create-react-app做的留言板
  • docker python 配置
  • Invalidate和postInvalidate的区别
  • PAT A1050
  • Spring-boot 启动时碰到的错误
  • 大数据与云计算学习:数据分析(二)
  • 动态魔术使用DBMS_SQL
  • 聚类分析——Kmeans
  • 三分钟教你同步 Visual Studio Code 设置
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • ​香农与信息论三大定律
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (三)elasticsearch 源码之启动流程分析
  • (四)模仿学习-完成后台管理页面查询
  • (转)母版页和相对路径
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .Net IOC框架入门之一 Unity
  • .NET 依赖注入和配置系统
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • @JSONField或@JsonProperty注解使用
  • @德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?
  • [ HTML + CSS + Javascript ] 复盘尝试制作 2048 小游戏时遇到的问题
  • [ 第一章] JavaScript 简史
  • [ACTF2020 新生赛]Upload 1
  • [BZOJ2281][SDOI2011]黑白棋(K-Nim博弈)
  • [Contiki系列论文之2]WSN的自适应通信架构
  • [EFI]Acer Aspire A515-54g电脑 Hackintosh 黑苹果efi引导文件
  • [EFI]Lenovo ThinkPad X280电脑 Hackintosh 黑苹果引导文件
  • [Hadoop in China 2011] Hadoop之上 中国移动“大云”系统解析
  • [JS入门到进阶] 前端开发不能写undefined?这是误区!
  • [Linux打怪升级之路]-信号的保存和递达
  • [MYSQL]mysql将两个表结果合并到一起
  • [oeasy]python0004_游乐场_和python一起玩耍_python解释器_数学运算
  • [OPEN SQL] 新增数据
  • [Python]`threading.local`创建线程本地数据