当前位置: 首页 > 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.lryc.cn/news/595106.html

相关文章:

  • 通信刚需小能手,devicenet转PROFINET网关兼容物流分拣自动化
  • 从cv610的demo原理看,i2c的上拉电阻为 1k
  • day27 力扣332.重新安排行程 力扣51. N皇后 力扣37. 解数独 力扣455.分发饼干 力扣376. 摆动序列 力扣53. 最大子序和
  • 【设计模式C#】工厂方法模式(相比简单工厂模式更加具有灵活性和扩展性的工厂模式)
  • 力扣15:三数之和
  • 测量误差溯源:系统误差与随机误差的数学建模与分离方法
  • 结构型模式-架构解耦与扩展实践
  • 清理磁盘空间
  • Windows容器网络的带宽限制QoS策略配置
  • CPO光模块能取代传统光模块吗?
  • 量子算法可视化工具:撕裂量子黑箱的破壁者
  • 量子生成对抗网络:量子计算与生成模型的融合革命
  • 云原生安全工具:数字基础设施的免疫长城
  • 苹果Find My新增智能位置共享模式​​
  • 自动化计算机经过加固后有什么好处?
  • Android开发中ANR治理方案
  • Java -- 自定义异常--Wrapper类--String类
  • ansible批量部署zabbix客户端
  • Bun v1.2.19发布,node_modules隔离,sql比node快6倍
  • 机器学习中的数据预处理:从入门到实践
  • DAY19 常见的特征筛选算法
  • 【初识Qt】
  • 鸿蒙开发中与 AI 编码助手的共处之道(ArkTS 视角)
  • 第16次:用户浏览记录
  • 关于java8里边Collectors.toMap()的空限制
  • React探索高性能Tree树组件实现——react-window、react-vtree
  • Spring Boot 3企业级架构设计:从模块化到高并发实战,9轮技术博弈(含架构演进解析)
  • spring boot windows linux 控制台 文件 乱码问题详解
  • Python100个库分享第37个—BeautifulSoup(爬虫篇)
  • 基于R语言的分位数回归技术应用