爬虫4-selenium浏览器自动化

爬虫4-selenium浏览器自动化

零、代码功能

1、自动登录博客网站并发表评论

# -*- coding: utf-8 -*-
"""
Spyder 编辑器

这是一个临时脚本文件。
"""
from selenium import webdriver
browser=webdriver.Chrome()
browser.get('https://wpblog.x0y1.com')
bnt_login=browser.find_element_by_link_text('登录')
bnt_login.click()
user=browser.find_element_by_id('user_login')
user.send_keys('codetime')
psd=browser.find_element_by_id('user_pass')
psd.send_keys('shanbay520')
submit=browser.find_element_by_id('wp-submit')
submit.click()
essay=browser.find_element_by_link_text('2006年~2019年中国国内生产总值 (GDP) 统计')
essay.click()
talk=browser.find_element_by_id('comment')
talk.send_keys('test')
talk_submit=browser.find_element_by_id('submit')
talk_submit.click()
browser.quit()

2、在博客网站里打印出含有python的文章标题

# -*- coding: utf-8 -*-
"""
Created on Sun Jan 17 16:52:35 2021

@author: 25483
"""
from selenium import webdriver
import time
browser=webdriver.Chrome()
browser.get('https://wpblog.x0y1.com/')
search=browser.find_element_by_id('search-form-1')
search.send_keys('python')
submit=browser.find_element_by_class_name('search-submit')
submit.click()

"""
link=browser.find_elements_by_partial_link_text('Python')
for i in link:
   print(i.text)
#不行,因为不止出现一次
"""

link=browser.find_elements_by_class_name('entry-title')
for i in link:
    print(i.text)

time.sleep(5)
browser.close()

一、selenium介绍及准备

1、selenium:

浏览器自动化测试框架,原本用于网页测试。控控制浏览器,模拟人的操作,如登录网页,点击、输入内容等,像有无形的手,自动控制鼠标和键盘,帮助干活(有点诡异~)

2、安装selenium

(1)导入selenium库

和安装Python其他的库一样,pip install selenium,anaconda里可直接在navigator里搜索安装。

(2)安装浏览器驱动

一般用chrome浏览器,所以驱动也是chromedriver,驱动镜像网站https://npm.taobao.org/mirrors/chromedrive。

查看chrome浏览器版本(右边三个星号-帮助-关于google chrome)

点进去网站找版本最接近的镜像,下载,windows选择chromedriver_win32,解压文件

把exe文件放入python的根目录中的scripts文件夹内,若用anaconda,则选择anaconda的scripts。

二、selenium获取数据

打开浏览器——获取网页数据——关闭浏览器

# 从 selenium 中导入 webdriver(驱动)
from selenium import webdriver

# 选择 Chrome 浏览器打开
browser = webdriver.Chrome()
# 打开网页
browser.get('https://wpblog.x0y1.com')
# 打印出网页源代码
print(browser.page_source)
# 关闭浏览器
browser.quit()

注意:用selenium获得的网页源代码,是数据加载完毕最终的源代码,网页加载后通过API获取的数据也在这,所以不用考虑静态网页和动态网页的问题。

有些网页内容较多,加载较慢,可以通过time.sleep(5),需要导入time模块,等几秒种在打印出网页,以确保获得的网页是完整的。

在这里插入图片描述

三、处理数据

selenium查找元素的方法如下

1、查找第一个符合条件的元素

在这里插入图片描述

2、查找所有符合条件的元素

在这里插入图片描述

3、文本内容和属性值

通过上方图片上的方法获得的都是WebElement对象
在这里插入图片描述

# <a href="http://code.shanbay.com">扇贝编程</a>
link = browser.find_element_by_link_text('扇贝编程')
print(link.get_attribute('href'))
# 输出:http://code.shanbay.com
print(link.text)
# 输出:扇贝编程

4、控制浏览器

在这里插入图片描述

例1、自动登录博客发表评论

from selenium import webdriver

browser = webdriver.Chrome()
# 打开博客
browser.get('https://wpblog.x0y1.com')
# 找到登录按钮
login_btn = browser.find_element_by_link_text('登录')
# 点击登录按钮
login_btn.click()
# 找到用户名输入框
user_login = browser.find_element_by_id('user_login')
# 输入用户名
user_login.send_keys('codetime')
# 找到密码输入框
user_pass = browser.find_element_by_id('user_pass')
# 输入密码
user_pass.send_keys('shanbay520')
# 找到登录按钮
wp_submit = browser.find_element_by_id('wp-submit')
# 点击登录按钮
wp_submit.click()
# 找到第一篇文章
more_link = browser.find_element_by_class_name('more-link')
# 点击第一篇文章
more_link.click()
# 找到评论框
comment = browser.find_element_by_id('comment')
# 输入评论
comment.send_keys('由 selenium 自动评论')
# 找到发表评论按钮
submit = browser.find_element_by_id('submit')
# 点击发表评论按钮
submit.click()
# 关闭浏览器
browser.quit()

思路:先由selenium查找元素的方法找到对应元素,然后调用其click()方法点击该元素(链接或按钮),用send_keys()方法模拟键盘出入内容

selenium学习文档:https://selenium-python-zh.readthedocs.io/en/latest/

五、总结

1、selenium
2、获取数据
3、处理数据
(1)查找元素的方法
文本内容和属性
(2)操作浏览器的方法
click()和send_keys()
4、认真分析网页源代码
5、用到的网站
浏览器驱动镜像
https://npm.taobao.org/mirrors/chromedriver

要操作的网站
https://wpblog.x0y1.com

selenium学习文档
https://selenium-python-zh.readthedocs.io/en/latest/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值