爬虫 4 selenium
- cookie的处理
- 手动处理
- cookie从抓包工具中捕获封装到headers中
- 自动处理
- session对象。
- 代理
- 代理服务器
- 进行请求转发
- 代理ip:port作用到get、post方法的proxies = {'http':'ip:port'}中
- 代理池(列表)
- 验证码的识别
- 超级鹰
- 模拟登陆
- 验证码的识别
- 动态请求参数
- cookie
- 单线程+多任务异步协程
- 协程
- 如果一个函数的定义被asyic修饰后,则改函数调用后会返回一个协程对象。
- 任务对象:
- 就是对协程对象的进一步封装
- 绑定回调
- task.add_done_callback(func):func(task):task.result()
- 事件循环对象
- 事件循环对象是用来装载任务对象。该对象被启动后,则会异步的处理调用其内部装载的每一个任务对象。(将任务对象手动进行挂起操作)
- aynic,await
- 注意事项:在特殊函数内部不可以出现不支持异步模块的代码,否则会中断整个异步的效果!!!
- aiohttp支持异步请求的模块
- selenium模块在爬虫中的使用
- 概念:是一个基于浏览器自动化的模块。
- 爬虫之间的关联:
- 便捷的捕获到动态加载到的数据。(可见即可得)
- 实现模拟登陆
- 环境安装:pip install selenium
- 基本使用:
- 准备好某一款浏览器的驱动程序:http://chromedriver.storage.googleapis.com/index.html
- 版本的映射关系:https://blog.****.net/huilan_same/article/details/51896672
from selenium import webdriver from time import sleep bro = webdriver.Chrome(executable_path='chromedriver.exe') bro.get('https://www.jd.com/') sleep(1) #进行标签定位 search_input = bro.find_element_by_id('key') search_input.send_keys('mac pro') btn = bro.find_element_by_xpath('//*[@>) btn.click() sleep(2) #执行js bro.execute_script('window.scrollTo(0,document.body.scrollHeight)') sleep(2) page_text = bro.page_source print(page_text) sleep(2) bro.quit()
from selenium import webdriver from time import sleep # 后面是你的浏览器驱动位置,记得前面加r'','r'是防止字符转义的 driver = webdriver.Chrome(r'chromedriver.exe') # 用get打开百度页面 driver.get("http://www.baidu.com") # 查找页面的“设置”选项,并进行点击 print(driver.find_elements_by_link_text('设置')) driver.find_element_by_id('s-usersetting-top').click() # # 打开设置后找到“搜索设置”选项,设置为每页显示50条 driver.find_elements_by_link_text('搜索设置')[0].click() sleep(2) # 选中每页显示50条 driver.find_element_by_xpath('//*[@>).click() # m = driver.find_element_by_id('nr_2') sleep(2) driver.find_element_by_xpath('//*[@>).click() # 点击保存设置 # 处理弹出的警告页面 确定accept() 和 取消dismiss() driver.switch_to_alert().accept() sleep(3) # 找到百度的输入框,并输入 美女 driver.find_element_by_id('kw').send_keys('美女') sleep(3) # 点击搜索按钮 driver.find_element_by_id('su').click() sleep(3) # 在打开的页面中找到“Selenium - 开源中国社区”,并打开这个页面 driver.find_elements_by_link_text('美女_海量精选高清图片_百度图片')[0].click() sleep(5) # 关闭浏览器 driver.quit()