首页 > 其他分享 >爬虫selenium模块

爬虫selenium模块

时间:2023-03-21 17:55:14浏览次数:40  
标签:webdriver 浏览器 chrome selenium 爬虫 find bro 模块 options

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可以操控手机

标签:webdriver,浏览器,chrome,selenium,爬虫,find,bro,模块,options
From: https://www.cnblogs.com/moongodnnn/p/17240830.html

相关文章

  • selenium登录cnblogs-抽屉半自动点赞-xpath的使用-selenium动作链-自动登录12306-打码
    目录selenium登录cnblogs-抽屉半自动点赞-xpath的使用-selenium动作链-自动登录12306-打码平台使用-使用打码平台自动登录-使用selenium爬取jd商品信息-scrapy介绍昨日回顾......
  • 双麦回音消除及远场拾音降噪模块 A-68
    一,产品概述:  A-68是一款高性能的数字语音处理模块,可以针对免提全双工通话中的回音问题进行消除(AEC),并具有优异的环境噪音(ENC)压制及人声萃取功能,让通话设备获得......
  • 爬虫4
    今日内容0selenium登录cnblogsfromseleniumimportwebdriverfromselenium.webdriver.common.byimportByimporttimeimportjsonbro=webdriver.Chrome(exec......
  • 爬虫5
    今日内容0scrapy架构介绍#引擎(EGINE)引擎负责控制系统所有组件之间的数据流,并在某些动作发生时触发事件。#调度器(SCHEDULER)用来接受引擎发过来的请求,压入队......
  • 爬虫----day04()
    昨日回顾#1beautifulsoup4使用 -xml解析库,用它来解析爬取回来的html内容,从中找出我们需要的内容#2遍历文档树 -.的使用soup.html.body.p.a-获取属性......
  • 爬虫----day05()
    上节回顾#1selenium -登录cnblogs,拿到cookie,再打开cnblogs,写入cookie,它就是登录状态-半自动点赞---》selenium生成的cookie,给requests用 -selenium操作......
  • 如何设计一个网页爬虫
    作为长期深耕在爬虫行业的程序猿来说,对于设计一个网页爬虫想必很简单,下面就是一些有关网页爬虫设计的一些思路,可以过来看一看。第一步:简述用例与约束条件把所有需要的东......
  • Scrapy爬虫之反人类的反爬虫手段
    最近一直在编写一个爬虫项目,同时也通过爬虫爬取了一些网站数据(正规公开数据),我们都知道,爬虫和反爬虫一直都是相辅相成的,爬虫程序员想破解反爬虫的技术,反爬虫的技术员则希望......
  • Python之collections模块
    简介collections是python的内置模块,提供了很多方便且高性能的关于集合的操作,掌握这些知识有助于提高代码的性能和可读性。常用功能计数器(Counter)​双端队列(deque)......
  • python爬虫如何构建基础爬虫思路
    对于长期游弋于大数据中的程序来说,正常来说基础爬虫有5个模块,通过多个文件相互间配合,然而实现一个相对完善的爬虫方案,以便于后期做更完善的爬虫方案做准备。这里目的是爬......