网络爬虫学习(十一)

上一篇(https://blog.youkuaiyun.com/weixin_44526949/article/details/86735754)学习了pyquery,pyquery的使用类似于jquery,当我们在解析网页时,对网页中的内容,比如元素、元素标签、DOM操作等等,pyquery会非常的方便。本期来学习一个新的模块的使用方法,这个模块就是Selenium模块。该模块是一个自动化测试工具,在之前的博文中也有所提及,本期来具体学习其使用方法。Selenium模块作为一种自动化测试工具,支持多种浏览器,可以驱动浏览器来完成一些操作。在做爬虫时,主要用来解决JavaScript渲染的问题。

基本使用:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
browser = webdriver.Firefox()
try:
    browser.get("http://www.baidu.com")
    input = browser.find_element_by_id("kw")
    input.send_keys("Python")
    input.send_keys(Keys.ENTER)
    wait = WebDriverWait(browser, 10)
    wait.until(EC.presence_of_element_located((By.ID,"content_left")))
    print(browser.current_url)
    print(browser.get_cookies())
    print(browser.page_source)
finally:
    browser.close()
 

通过上面的代码便完成了自动打开Firefox浏览器,并且打开百度,在搜索框自动搜索Python这个关键字,并且获取网页内容。这样的一个智能化的上网流程。

接下来对上面的操作展开来说明这个过程,使用selenium的工作流程。

声明浏览器对象:

from selenium import webdriver
browser = webdriver.Chrome()  # google Chrome
browser = webdriver.Firefox() # mozilla Firefox
browser = webdriver.Edge()    # Microsoft Edge
browser = webdriver.PhantomJS() # 无界面浏览器
browser = webdriver.Safari()   # Apple Safari

这些浏览器在运行时,需要相应的驱动包,只要安装好驱动包,便可以打开浏览器,比如Chrome浏览器的chromedriver。这些安装方法之前已经介绍过,这里不再说明。

访问页面:

from selenium import webdriver
browser = webdriver.Chrome()

browser.get("https://www.taobao.com")
print(browser.page_source)
browser.close()

查找元素:

# 查找单个元素
from selenium import webdriver

browser = webdriver.Chrome()
browser.get("https://www.taobao.com")
# 查找单个元素的方法一
input_first = browser.find_element_by_id("q")
input_second = browser.find_element_by_css_selector("#q")
input_third = browser.find_element_by_xpath('//*[@id="q"]')
print(input_first, input_second, input_third)
# 查找单个元素的方法二
input_forth = browser.find_element(By.ID,'q')  # 一种查找单个元素的通用方法
# 查找多个元素的方法一
lis = browser.find_elements_by_css_selector(".service-bd li")
print(lis)
# 查找多个元素的方法二
liss = browser.find_elements(By.CSS_SELECTOR,".service-bd li")  # 一种查找
                                        #多个元素的通用方法
print(liss)
browser.close()

元素的交互操作:

from selenium import webdriver
import time

browser = webdriver.Chrome()
browser.get("https://www.taobao.com")
input = browser.find_element_by_id("q")
input.send_keys('iphone')
time.sleep(1)
input.clear()
input.send_keys("iPad")
button = browser.find_element_by_class_name("btn-search")
button.click()

浏览器的前进与后退:

import time
from selenium import webdriver

browser = webdriver.Firefox()
browser.get("https://www.baidu.com/")
browser.get("https://www.taobao.com/")
browser.get("https://translate.google.cn/")
browser.back()
time.sleep(1)
browser.forward()
browser.close()

Cookies

from selenium import webdriver

browser = webdriver.Chrome()
browser.get("https://www.zhihu.com/explore")
print(browser.get_cookies())
browser.add_cookie({"name":"name","domain":"www.zhihu.com","value":"ZhangSan"})
print(browser.get_cookies())
browser.delete_all_cookies()  # 删除所有的cookie
print(browser.get_cookies())

选项卡管理

import time
from selenium import webdriver

browser = webdriver.Chrome()
browser.get("https://www.baidu.com")
browser.execute_script("window.open()")
print(browser.window_handles)
browser.switch_to_window(browser.window_handles[1])  # 切换到第二个选项卡
browser.get("https://www.taobao.com")
time.sleep(1)
browser.switch_to_window(browser.window_handles[0])  # 切换到第一个选项卡
browser.get("https://python.org")

异常处理

from selenium import webdriver
from selenium.common.exceptions import TimeoutException,NoSuchElementException
browser = webdriver.Chrome()
try:
    browser.get("https://www.baidu.com")
except TimeoutException:
    print("Time Out")
try:
    browser.find_element_by_id("hello")
except NoSuchElementException:
    print("No Element")
finally:
    browser.close()

关于Selenium的使用,就介绍到这里,如果有其他更多的需求,可以查找网上的一些资料。下次,我们会使用之前的工具来进行爬虫实践。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CSAIWQYB

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值