【Python】爬虫:Selenium使用总结 - Go语言中文社区

【Python】爬虫:Selenium使用总结


【Python】爬虫:Selenium使用总结

一,安装selenium库,安装ChromeDriver

(一)安装selenium库
使用国内镜像安装,cmd窗口安装

pip3 install selenium -i -i https://pypi.douban.com/simple 

(二)安装ChromeDriver
首先,先确定Chrome的版本,右上角三个点–》帮助–》关于Google Chrome,
然后,在
http://npm.taobao.org/mirrors/chromedriver/ 找到与版本对应的ChromeDriver
最后,将解压得到的chromedriver.exe 放到 Python安装目录的Script文件夹下

from selenium import webdriver
brower = webdriver.Chrome()
brower.get('https://www.baidu.com/')

运行代码,弹出谷歌浏览器,表示成功。

二,selenium用法

(一)声明浏览器对象

from selenium import webdriver
brower = webdriver.Chrome()
brower.get('https://www.baidu.com/')

(二)定位网页节点
通过属性id,name,class等,以及Xpath,css选择器进行定位

## 单个节点
find_element_by_id
find_element_by_xpath
find_element_by_link_text
find_element_by_partial_link_tex
find_element_by_name(
find_element_by_tag_name
find_element_by_class_name
find_element_by_css_selector

这些方法都是调用通用方法

def find_element(self, by=By.ID, value=None):
## 两个参数:查找方式,值

多个节点
查找多个节点时,需要使用find_elements_by_xxxx方法,同样也有对应的通用调用方法

def find_elements(self, by=By.ID, value=None):

(三)节点交互

#输入文字
send_keys()
#清空文字
clear()
#点击按钮
click()

(四)执行JS

execute_script('js脚本')

(五)获取节点信息
通过定位节点的方法,可以得到一个WebElement对象,获取该对象包含属性的值

get_attribute(attr_name)

获取文本,直接调用text属性获取节点的文本值,除此之外,还有其他属性,id获取节点id;location获取节点在页面的相对位置;tag_name获取节点标签名称;size获取节点的宽高。
(六)延时等待
有时需要等待到某个节点加载完成,或者整个页面完成加载。这是需要延时等待一段时间,确保加载完成。等待的方式有两种,显式等待,隐式等待
显式等待
指定要等待的节点,等待的时间。如果在规定时间加载出节点,则返回改节点,若未加载出节点,则抛出异常。

wait = WebDriverWait(browser,10)  #设置加载时间10s
#设置等待条件
wait.until(EC.presence_of_all_elements_located((By.XPATH,'//*[@id="Quater_bar"]/div/div[1]/h2/a/img')))

其他等待条件
在这里插入图片描述
在这里插入图片描述
隐式等待

implictitly_wait(时长) 

(七)页面选择
当brower打开多个页面可以
通过back()后退,选取当前页面的后一个页面
通过forward()前进,选取当前页面的前一个页面

(八)无界面模式
1,Chrome Headless模式无界面模式

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
browser = webdriver.Chrome(chrome_options=chrome_options)

2,PhantomJS()
下载地址:
http://phantomjs.org/download.html
下载后解压,phantomjs.exe移到你所用python安装目录下的Script中就可以使用了。

from selenium import webdriver
from lxml import  etree

browser = webdriver.PhantomJS()
browser.get("https://www.baidu.com/")
html = browser.page_source
doc = etree.HTML(html)
items = doc.xpath('//*[@id="u1"]/a')
for item in items:
    print(item.text)
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/yangjjuan/article/details/89891947
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-08 11:49:15
  • 阅读 ( 1177 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢