爬虫selenium模块
Posted 你好,少年
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬虫selenium模块相关的知识,希望对你有一定的参考价值。
selenium基本使用
selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题
可以直接用代码模拟真实的浏览器操作,每一步的点击 输入等
selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器
from selenium import webdriver,
import time
bro = webdriver.Chrome(executable_path=\'chromedriver_mac64\')
# 开启谷歌浏览器控制
bro.get(\'https://www.douyin.com/\')
# 用浏览器打开一个网页
print(bro.page_source)
# 获取到当前页面的所有内容 html格式 和 css
with open(\'1.html\',\'w\',encoding=\'utf-8\')as f:
f.write(bro.page_source)
# 将获取到的页面数据 写入一个文件中 然后我们就可以使用bs4模块和request模块进行爬虫喽
time.sleep(2)
无界面浏览器
from selenium import webdriver
import time
from selenium.webdriver.chrome.options import Options
# 隐藏浏览器的图形化界面,但是数据还拿到
# chrome_options.add_argument(\'window-size=1920x3000\') #指定浏览器分辨率
# chrome_options.add_argument(\'--hide-scrollbars\') #隐藏滚动条, 应对一些特殊页面
# chrome_options.add_argument(\'blink-settings=imagesEnabled=false\') #不加载图片,
# chrome_options.add_argument(\'--headless\')
chrome_options = Options()
chrome_options.add_argument(\'blink-settings=imagesEnabled=false\')
# 生成一个无头浏览器 并且不加载图片 访问速度更快
bro = webdriver.Chrome(executable_path=\'chromedriver_mac64\',chrome_options=chrome_options)
bro.get(\'https://www.douyin.com/\')
# 用浏览器打开一个网页
print(bro.page_source)
# 获取到当前页面的所有内容 html格式 和 css
with open(\'1.html\',\'w\',encoding=\'utf-8\')as f:
f.write(bro.page_source)
# 将获取到的页面数据 写入一个文件中
time.sleep(2)
代码操控网页抖音自动登录
from selenium import webdriver
import time
from selenium.webdriver.chrome.options import Options
# 隐藏浏览器的图形化界面,但是数据还拿到
from selenium.webdriver.common.by import By
chrome_options = Options()
# 生成一个无头浏览器 并且不加载图片 访问速度更快
bro = webdriver.Chrome(executable_path=\'chromedriver_mac64\', chrome_options=chrome_options)
bro.get(\'https://www.douyin.com/\')
# 用浏览器打开一个网页
bro.implicitly_wait(10)
btn = bro.find_element(by=By.CSS_SELECTOR, value=\'#_7hLtYmO > button\')
btn.click()
# 获取到一个登录按钮,然后点击这个按钮
btn2 = bro.find_element(by=By.CSS_SELECTOR,
value="#web-login-container > article > article > article > div.web-login-common-wrapper__tab > ul.web-login-tab-list > li:nth-child(3)")
btn2.click()
# 获取到账号登录按钮 点击按钮
time.sleep(1)
phone = bro.find_element(by=By.CSS_SELECTOR,
value="#web-login-container > article > article > article > form > div.web-login-account-password__account-input-wrapper > div > input")
# 获取到输入框输入手机号
phone.send_keys(\'18338952552\')
time.sleep(1)
password = bro.find_element(by=By.CSS_SELECTOR,
value="#web-login-container > article > article > article > form > div.web-login-account-password__password-input-wrapper > div > div > input")
password.send_keys(\'wujinbo123\')
# 获取到密码框 输入密码
btn_login = bro.find_element(by=By.CSS_SELECTOR,
value="#web-login-container > article > article > article > form > div.web-login-account-password__button-wrapper > button")
btn_login.click()
# 获取到登录按钮,然后点击
time.sleep(5)
bro.find_element(by=By.支持的方法)
input_1=bro.find_element(by=By.ID,value=\'wd\') # 按id找
input_1 = bro.find_element(by=By.NAME, value=\'wd\') # name属性名
input_1=bro.find_element(by=By.TAG_NAME,value=\'input\') # 可以按标签名字找
input_1=bro.find_element(by=By.CLASS_NAME,value=\'s_ipt\') # 可以按类名
input_1=bro.find_element(by=By.LINK_TEXT,value=\'登录\') # 可以按a标签内容找
input_1=bro.find_element(by=By.PARTIAL_LINK_TEXT,value=\'录\') # 可以按a标签内容找
iinput_1 = bro.find_element(by=By.CSS_SELECTOR, value=\'#su\') # 可
获取标签的属性值
print(res.get_attribute(\'src\')) # 用的最多
res.text
#获取标签ID,位置,名称,大小(了解)
print(tag.id)
print(tag.location)
# 获取该标签的坐标
print(tag.tag_name)
print(tag.size)
btn = bro.find_element(by=By.CSS_SELECTOR, value=\'#_7hLtYmO > button\')
res = btn.get_attribute(\'alt\')
print(res)
# 获取到这个标签的alt属性的值
# 代码执行很快,有的标签没来的及加载,直接查找就会报错,设置等待
# 隐士等待:所有标签,只要去找,找不到就遵循 等10s的规则
bro.implicitly_wait(10)
# 显示等待:需要给每个标签绑定一个等待,麻烦
对于标签的一些操作
# 点击
tag.click()
# 输入内容
tag.send_keys()
# 清空内容
tag.clear()
# 浏览器对象 最大化
bro.maximize_window()
#浏览器对象 截全屏
bro.save_screenshot(\'main.png\')
在网页上执行js代码
bro.execute_script(\'alert("美女")\')
# 引号内部的相当于 用script标签包裹了
bro = webdriver.Chrome(executable_path=\'chromedriver_mac64\', chrome_options=chrome_options)
bro.get(\'https://www.douyin.com/\')
# 可以干的事
-获取当前访问的地址 window.location
-打开新的标签
-滑动屏幕--》bro.execute_script(\'scrollTo(0,document.documentElement.scrollHeight)\')
-获取cookie,获取定义的全局变量
浏览器的操作
import time
from selenium import webdriver
browser=webdriver.Chrome(executable_path=\'chromedriver.exe\')
browser.get(\'https://www.baidu.com\')
browser.get(\'https://www.taobao.com\')
browser.get(\'http://www.sina.com.cn/\')
browser.back()
time.sleep(2)
browser.forward()
browser.close()
异常处理
import time
from selenium import webdriver
browser=webdriver.Chrome(executable_path=\'chromedriver.exe\')
try:
except Exception as e:
print(e)
finally:
browser.close()
appnium可以操控手机
以上是关于爬虫selenium模块的主要内容,如果未能解决你的问题,请参考以下文章