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

selenium爬取图书信息

一.爬取某网页某类书的全部信息(书名,作者,价格,简介)

1.导入相关的库时间库selenium库等

import time
from selenium import webdriver
from selenium.webdriver import Keys
from selenium.webdriver.edge.options import Options
from selenium.webdriver.common.by import By

2.先定义一个函数方便我们后面使用函数来将网页上的内容写入文件中

def get_info(driver):global page_numtime.sleep(5)eles = driver.find_elements(by=By.CLASS_NAME,value='book_item')for element in eles:element.click()handers = driver.window_handlesdriver.switch_to.window(handers[-1])time.sleep(5)book_name = driver.find_element(by=By.CLASS_NAME,value='book-name').textbook_auther = driver.find_element(by=By.CLASS_NAME,value='book-author').textbook_summary =driver.find_element(by=By.CLASS_NAME,value='book-summary').textbook_price =driver.find_element(by=By.CLASS_NAME,value='price').textfile.write("书名: "+book_name+'\n'+'作者: '+book_auther+'\n'+'书本简介: '+book_summary+'\n'+'价格: '+book_price+'\n'+"========================================"+'\n')driver.close()handers = driver.window_handlesdriver.switch_to.window(handers[-1])page_num += 1

handers = driver.window_handles   查询当前网页全部标签页以列表形式返回
driver.switch_to.window(handers[-1])  将driver对象定位到最后一个标签页

3.先用创建写的方式打开一个文件,再进行一些浏览器的绑定操作,最后打开我们需要打开的网址

file = open("ppt图书信息.txt",'w')
edge_options = Options()
# edge_options.add_argument('--headless')
edge_options.binary_location=r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
driver = webdriver.Edge(options=edge_options)
driver.get("网站地址")

4.根据浏览器的检查元素功能找到搜索框对应的信息通过find_element()方法找到元素并输入信息回车

还需将driver定位到最后的标签页

driver.find_element(by=   ,value='   ').send_keys("ppt"+Keys.RETURN)
handers = driver.window_handles
time.sleep(3)
driver.switch_to.window(handers[-1])

5.根据浏览器的检查元素功能找到”更多“这个元素对应的信息通过find_element()方法找到元素并点击

最后通过get_info()方法获取图书的全部信息并写入文件

并设置初始页数为0,在方法内会在读取后将页数加1

driver.find_element(by=   ,value='   ').click()
handers = driver.window_handles
driver.switch_to.window(handers[-1])
page_num=0
get_info(driver)

6,在上数步骤读完第一页后继续通过循环继续往后读取后面网页数的图书信息,可以自己观察当前所需要读取的总共页数来控制循环的读取

我们在读取完一页后还需找到网页中的下一页并点击

while True:if page_num==13:breakdriver.find_element(by=By.CLASS_NAME,value='ivu-page-next').click()get_info(driver)
file.close()
http://www.dtcms.com/a/290162.html

相关文章:

  • 关于JVM
  • 低速信号设计之 RGMII 篇
  • Rk3568驱动开发_非阻塞IO_16
  • 有关Mysql数据库的总结
  • Pytest 输出捕获详解:掌握如何查看和控制打印信息
  • Nacos 探活机制深度解析:临时 / 永久实例差异及与 Sentinel 的熔断协作
  • C++11之右值引用与移动语义(提高效率)重要
  • 「日拱一码」033 机器学习——严格划分
  • 【VASP】VASP 机器学习力场(MLFF)实战
  • 机器学习对词法分析、句法分析、浅层语义分析的积极影响
  • Taro 本地存储 API 详解与实用指南
  • 京东疯狂投资具身智能:众擎机器人+千寻智能+逐际动力 | AI早报
  • 从“被动照料”到“主动预防”:智慧养老定义的养老4.0时代
  • 迁移科技3D视觉系统:赋能机器人上下料,开启智能制造高效新纪元
  • Nacos中feign.FeignException$BadGateway: [502 Bad Gateway]
  • 第15次:商品搜索
  • Laravel 系统版本查看及artisan管理员密码找回方法针对各个版本通用方法及原理-优雅草卓伊凡
  • Java-78 深入浅出 RPC Dubbo 负载均衡全解析:策略、配置与自定义实现实战
  • LeetCode - 3274. Check if Two Chessboard Squares Have the Same Color
  • 【Semi笔记】Semisupervised Change Detection With Feature-Prediction Alignment
  • .NET SDK 9.0.200引入对SLNX解决方案文件的支持
  • compser json和lock的作用区别
  • 【qml-3】qml与c++交互第二次尝试(类型方式)
  • 【C++11】哈希表与无序容器:从概念到应用
  • ElasticSearch:不停机更新索引类型(未验证)
  • git switch
  • (LeetCode 面试经典 150 题) 219. 存在重复元素 II (哈希表)
  • taro微信小程序的tsconfig.json文件说明
  • 自动化与安全 - 将 Terraform 集成到 CI/CD
  • 编译支持cuda硬件加速的ffmpeg