爬虫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模块的主要内容,如果未能解决你的问题,请参考以下文章

3爬虫之selenium模块

爬虫之selenium模块

爬虫解析Selenium 之 --- Selenium模块

爬虫selenium模块

爬虫----selenium模块

爬虫之selenium模块