【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)
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值