python Selenium浏览器爬虫指南 --未完成版本
# 打开浏览器
from selenium.webdriver.edge.service import Serviceservice = Service(executable_path=".././msedgedriver.exe")
browser = webdriver.Edge(service=service)browser.get(r'https://www.baidu.com/')
# 截图
browser.get_screenshot_as_file('截图.png')
# 设置浏览器大小# 全屏
browser.maximize_window()
# 设置分辨率 500*500
browser.set_window_size(500,500)
# 设置分辨率 1000*800
browser.set_window_size(1000,800)
# 刷新页面
browser.refresh()
# 页面后退
browser.back()
# 页面前进
browser.forward()
# 获取页面基础属性print(browser.title)
# 当前网址
print(browser.current_url)
# 浏览器名称
print(browser.name)
# 网页源码
print(browser.page_source)
# 单机元素并单击
browser.find_element(by=By.ID, value="su").click()
# 搜索框模拟回车操作
find_element(By.ID,"kw")
find_element(By.NAME,"wd")
find_element(By.CLASS_NAME,"s_ipt")
find_element(By.TAG_NAME,"input")
find_element(By.link_TEXT,u"新闻")
find_element(By.PARTIAL_link_TEXT,u"新")
find_element(By.XPATH,"//*[@class='bg s_btn']")
find_element(By.CSS_SELECTOR,"span.bg s_btn_wr>input#su")
# 八大定位具体使用方法# by表示当前使用什么元素定位,我们可以进入By模块里可以看到By类下的八种属性,value表示当前属性的值1.ID具有唯一性,若是当前标签含有id属性,可以优先使用id定位。
driver.find_element(by=By.ID, value='id后面的字符串')2.name属性不唯一,一个页面可能有多个相同的name值,所以使用时要确保该属性值是唯一的
driver_name = driver.find_element(by=By.NAME, value='q')
driver_name.send_keys("作者是帅哥")3.CLASS_NAME
driver_name = driver.find_element(by=By.CLASS_NAME, value='sb_form_q')
driver_name.send_keys("作者是帅哥")4.LINK_TEXT,用于<a>标签定位
driver_name = driver.find_element(by=By.LINK_TEXT, value='文案')
driver_name.click() # click点击事件5.PARTIAL_LINK_TEXT,PARTIAL_LINK_TEXT与LINK_TEXT相似,都是用于超链接,区别在于前置value为模糊查询,后者匹配相等
driver_name = driver.find_element(by=By.LINK_TEXT, value='案')
driver_name.click() # click点击事件6.TAG_NAME, 用于标签定位(<a>,<p>,<input>....),该元素定位不常用,效率低
driver_name = driver.find_element(by=By.TAG_NAME, value='input')
driver_name.send_keys("作者是帅哥")7.XPATH
(1)可理解为元素路径定位,内含两种定位,绝对路径和相对路径绝对路径:以/html开头相对路径:以//*开头driver.find_element(by=By.XPATH, value="//*[@id='sb_form_q' and @name='q']").send_keys("作者是帅哥") #相对路径driver.find_element(by=By.XPATH, value="/html/body/div[2]/div/div[3]/div[2]/form/div[1]/input").send_keys("作者是帅哥") #绝对路径网页开发者模式F12下的复制:Copy XPath : 相对路径Copy full XPath : 相对路径(2)XPATH用法拓展(适用于相对路径)(1).contains用法 [contains(@属性,"属性值")]:模糊匹配driver.find_element(by=By.XPATH, value="//*[contains(@name,'na') and (@id,'sb_form_q')]").send_keys("作者说帅哥")(2).starts-with用法 [starts-with(@属性,"属性值")]:匹配以XXX开头driver.find_element(by=By.XPATH, value="//*[starts-with(@name,'2') and contains(@id,'2')]").send_keys("12")8.CSS_SELECTOR(1)层级语法定位 网页开发者模式F12下的复制:层级定位可直接copy selector即可driver.find_element(by=By.CSS_SELECTOR, value="copy selector").click()(2)选择器定位1.id选择器,这里需要在value值前加个#driver.find_element(by=By.CSS_SELECTOR, value="#sb_form_q").click()2.class选择器driver.find_element(by=By.CSS_SELECTOR, value="[class='sb_form_q']").send_keys("class选择器") #精准匹配3.属性选择器语法一:value="[属性='属性值']"driver.find_element(by=By.CSS_SELECTOR, value="[name='q']").send_keys("属性选择器")driver.find_element(by=By.CSS_SELECTOR, value="[id='sb_form_q']").send_keys("属性选择器")语法二:value="标签[属性=‘属性值’]"driver.find_element(by=By.CSS_SELECTOR, value="a[id='halou']").click()(3)CSS_SELECTOR拓展匹配以XX开头:value="[id^='head']")匹配以XX结尾:value="[id$='tail']"模糊匹配:valur="[name*='like']"# end
XPATH定位
- 以
/
开头,绝对路径,非常依赖于页面的顺序和位置- 以
//
开头,相对路径,不依赖于页面的顺序和位置,只看整个页面当中有没有符合表达式的元素.
选取当前节点,..
选取当前节点的父节点@
选取属性 ,//标签名称[@属性名称=值] 比如://*[@id="kw"
- 逻辑运算
and
条件与
;or
条件或
,//标签名称[@属性名称=值 and 属性名称=值 ]
,//div[@class="xxx" and contains(@style,"display:visibility")]
*
通配符。匹配所有//*
;@*
通配符。匹配所有属性//*[@*="hello"]
语法规则
表达式 | 作用 |
---|---|
nodename | 选取此层级节点下的所有子节点 |
/
|
代表从根节点进行选取 |
//
|
可以理解为匹配,就是在所有节点中选取此节点,直到匹配为止 |
.
|
选取当前节点 |
…
|
选取当前节点上一层(上一级目录) |
@
|
选取属性(也是匹配) |
标签定位
方式 | 效果 |
---|---|
/html/body/div
|
表示从根节点开始寻找,标签与标签之间/ 表示一个层级
|
/html//div
|
表示多个层级 作用于两个标签之间(也可以理解为在html下进行匹配寻找标签div) |
//div
|
从任意节点开始寻找,也就是查找所有的div标签 |
./div
|
表示从当前的标签开始寻找div |
属性定位
需求 | 格式 |
---|---|
定位div中属性名为href,属性值为‘www.baidu.com’的div标签 | @属性名=属性值 |
href为属性名 'www.baidu.com’为属性值 | /html/body/div[href=‘www.baidu.com’] |
python Selenium浏览器爬虫指南 --未完成版本相关推荐
- python selenium爬虫_详解基于python +Selenium的爬虫
详解基于python +Selenium的爬虫 一.背景 1. Selenium Selenium 是一个用于web应用程序自动化测试的工具,直接运行在浏览器当中,支持chrome.firefox等主 ...
- python + selenium +pyquery 爬虫 爬取 1688详情图片 阿里巴巴详情图片 与标题 下载图片并进行压缩
python + selenium +pyquery 爬虫 爬取 1688详情图片 阿里巴巴详情图片 与标题 下载图片并进行压缩 用到的库和源码下载地址 需要用到chromedriver 包含wi ...
- Python Selenium+Requests爬虫[双线程]--今日头条图片爬取【亲测能行!!!】
码前冷静分析 首先需要准备好selenium.requests库以及Chromedriver 这个就不细说了,有很多博客可以参考 然后讲一下大体思路 首先搜索想要爬取图片的关键词 - 接着是" ...
- python+selenium浏览器驱动(chrome,Firefox,IE)下载与封装
自动化介绍 自动化分为手动自测试和自动化测试,想要转变需要一个思维过程,自动化通俗来讲是一些重复性操作,这要可以用代码来驱动. Selenium(浏览器自动化测试框架) 是一个用于Web应用程序测试的 ...
- Python Selenium 浏览器点击操作
Selenium官网教程 selenium定位方法 Selenium提供了8种定位方式. id name class name tag name link text partial link text ...
- python selenium p_Python爬虫(二十一)_Selenium与PhantomJS
本章将介绍使用Selenium和PhantomJS两种工具用来加载动态数据,更多内容请参考:Python学习指南 Selenium Selenium是一个Web的自动化测试工具,最初是为网站自动化测试 ...
- 基于Python +Selenium的爬虫详解
一.selenium简介 由于requests模块是一个不完全模拟浏览器行为的模块,只能爬取到网页的HTML文档信息,无法解析和执行CSS.JavaScript代码,因此需要我们做人为判断: 1.什么 ...
- python+selenium浏览器常用操作(一)
1.导入selenium自定义的webdriver.后续可通过调用此协议启动各大浏览器 from selenium import webdriver #浏览器 from selenium.webdri ...
- [Python][Selenium]浏览器无头模式
1. edge无头模式 path = "msedgedriver.exe"EDGE = {"browserName": "MicrosoftEdge& ...
最新文章
- 图像处理——图像边缘检测
- enumerate()使用
- NetShopForge网上商店程序(VB)源码—讨论-发布
- Vue的生命周期以及钩子函数
- 砍掉中国90%的科研人员,对科技发展的影响微乎其微,某教授酒后真言!
- [HNOI2010]PLANAR
- 重学前端学习笔记(一)--前端发展史以及学习痛点
- Chromium 文件下载
- oeasy教您玩转vim - 2 - # 使用帮助
- 3月23日—3月27日四年级课程表
- mysql在mye_数据库映射出现重大问题
- 【SAP Abap】X-DOC:SE10 - SAP 传输请求 副本传输请求的应用
- 云时代架构之游戏服务器的架构演进
- Android属性系统简介
- 上传文件过大时,报The field file exceeds its maximum permitted size of 1048576 bytes问题
- QZ 5T 抓斗行车起重机 切电阻,空操,电气电器图纸一套这是调试后的最终版图纸,含CAD图纸
- 一张图了解“大数据,云计算,物联网”的关系
- JAVA学习笔记_Junit测试简单使用_assertEquals
- MATLAB-二维插值的笔记与应用--十安辰
- 获得淘宝/天猫app商品详情原数据