爬虫(六)- selenium控制浏览器,自动打开运行点击评论

安装selenium
pip install selenium
selenium的脚本可以控制所有常见浏览器的操作,在使用之前,需要安装浏览器的驱动
这里使用的是Chrome浏览器
下载驱动及安装方法:
https://localprod.pandateacher.com/python-manuscript/crawler-html/chromedriver/ChromeDriver.html
设置浏览器引擎

from selenium import webdriver    #从selenium库中调用webdriver模块
impot time

driver = webdriver.Chrome()       # 设置引擎为Chrome,真实地打开一个Chrome浏览器

driver.get('https://h5.ele.me/login/#redirect=https%3A%2F%2Fwww.ele.me%2F') # 访问页面
time.sleep(2)  #等待2秒让页面加载完
driver.close() # 关闭浏览器

解析与提取数据
driver是实例化浏览器会自动解析数据。
提取数据方法如下:
爬虫(六)- selenium控制浏览器,自动打开运行点击评论_第1张图片
爬虫(六)- selenium控制浏览器,自动打开运行点击评论_第2张图片


# 以下方法都可以从网页中提取出'你好,蜘蛛侠!'这段文字

find_element_by_tag_name:通过元素的名称选择
# 如<h1>你好,蜘蛛侠!</h1> 
# 可以使用find_element_by_tag_name('h1')

find_element_by_class_name:通过元素的class属性选择
# 如<h1 class="title">你好,蜘蛛侠!</h1>
# 可以使用find_element_by_class_name('title')

find_element_by_id:通过元素的id选择
# 如<h1 id="title">你好,蜘蛛侠!</h1> 
# 可以使用find_element_by_id('title')

find_element_by_name:通过元素的name属性选择
# 如<h1 name="hello">你好,蜘蛛侠!</h1> 
# 可以使用find_element_by_name('hello')

#以下两个方法可以提取出超链接

find_element_by_link_text:通过链接文本获取超链接
# 如<a href="spidermen.html">你好,蜘蛛侠!</a>
# 可以使用find_element_by_link_text('你好,蜘蛛侠!')

find_element_by_partial_link_text:通过链接的部分文本获取超链接
# 如<a href="https://localprod.pandateacher.com/python-manuscript/hello-spiderman/">你好,蜘蛛侠!</a>
# 可以使用find_element_by_partial_link_text('你好')

提取出的数据属于WebElement类对象
WebElement类对象与Tag对象类似对比如下:
爬虫(六)- selenium控制浏览器,自动打开运行点击评论_第3张图片
selenium所解析提取的,是Elements中的所有数据,而BeautifulSoup所解析的则只是Network中第0个请求的响应。

driver.page_source # 获取完整渲染的网页源代码,类型是str,可以和BeautifulSoup配合使用。

自动操作浏览器

.send_keys() # 模拟按键输入,自动填写表单
.click() # 点击元素

爬虫(六)- selenium控制浏览器,自动打开运行点击评论_第4张图片
Selenium下Chrome配置

from selenium.webdriver.chrome.options import Options   #引用模块
options = Options()    
options.add_argument('--log-level=3')   #放止报错ERROR:platform_sensor_reader_win.cc(244)] NOT IMPLEMENTED

driver = webdriver.Chrome(options = Options()) # 在引擎里添加配置
配置 作用
chrome_options.add_argument(’–headless’) # 无头模式
chrome_options.add_argument(’–disable-gpu’) # 禁用GPU加速
chrome_options.add_argument(’–start-maximized’) #浏览器最大化
chrome_options.add_argument(’–window-size=1280x1024’) # 设置浏览器分辨率(窗口大小)
chrome_options.add_argument(‘log-level=3’) #防报错
chrome_options.add_argument(’–user-agent=""’) # 设置请求头的User-Agent
chrome_options.add_argument(’–disable-infobars’) # 禁用浏览器正在被自动化程序控制的提示
chrome_options.add_argument(’–incognito’) # 隐身模式(无痕模式)
chrome_options.add_argument(’–hide-scrollbars’) # 隐藏滚动条, 应对一些特殊页面
chrome_options.add_argument(’–disable-javascript’) # 禁用javascript
chrome_options.add_argument(’–blink-settings=imagesEnabled=false’) # 不加载图片, 提升速度
chrome_options.add_argument(’–ignore-certificate-errors’) # 禁用扩展插件并实现窗口最大化

更多地址:https://peter.sh/experiments/chromium-command-line-switches/

from selenium import  webdriver 
import time
from bs4 import BeautifulSoup

from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--log-level=3')

driver = webdriver.Chrome(options = Options()) # 设置引擎为Chrome,真实地打开一个Chrome浏览器

driver.get('https://h5.ele.me/login/#redirect=https%3A%2F%2Fwww.ele.me%2F') # 访问页面
time.sleep(2)

tag=driver.find_elements_by_tag_name('input')[0] 
nb=input('请输入手机号\n')  
tag.send_keys('nb')
time.sleep(1)
yzm=driver.find_element_by_tag_name("button")
yzm.click()
c=input('请输入验证码\n')
code=driver.find_elements_by_tag_name('input')[1]
code.send_keys(c)
log=driver.find_element_by_class_name('SubmitButton-2wG4T')
log.click()
time.sleep(2)

st=driver.page_source       # 获取完整渲染的网页源代码,类型是str,可以和BeautifulSoup配合使用。

bs=BeautifulSoup(st,'html.parser')
li=bs.find_all('div',class_="rstblock-content")
for i in li:
    name=i.find('div').text
    print(name)
driver.close()

你可能感兴趣的:(python)