day3-代理和selenium

1.代理 ip 的使用

(1) 获取蘑菇代理中的代理 IP
import requestsdef get_ip():response = requests.get('http://piping.mogumiao.com/proxy/api/get_ip_bs?appKey=775206edf3dc4329ba04568b75a66a30&count=4&expiryDate=0&format=2&newLine=3')if response.text[0] == '{':print('提取IP失败')return Nonereturn [x for x in response.text.split('\n') if x]# 2.使用代理IP
def get_net_data():headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36'}# 'http':'ip:端口'# 'https':'ip:端口'ips = get_ip()# 判断是否提取到有效ipif not ips:print('ip获取失败,等10s以后重新运行')returnproxies = {'http': ips[0],'https': ips[1]}response = requests.get('https://movie.douban.com/top250', headers=headers, proxies=proxies)print(response.text)if __name__ == '__main__':print(get_ip())

2.使用代理的优化程序

import requests
import timedef get_ip():response = requests.get('http://piping.mogumiao.com/proxy/api/get_ip_bs?appKey=775206edf3dc4329ba04568b75a66a30&count=4&expiryDate=0&format=2&newLine=3')if response.text[0] == '{':print('提取IP失败')return Nonereturn [x for x in response.text.split('\n') if x]def get_net_data():# 不断获取ip直到成功while True:ips = get_ip()if ips:breaktime.sleep(5)print('ip获取成功:', ips)headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36'}proxies = {'http': ips[0],'https': ips[1]}url = 'https://movie.douban.com/top250'response = requests.get(url, headers=headers, proxies=proxies)print(response.text)get_net_data()

3.selenium 的基本功能

from selenium.webdriver import Chrome# 1. 创建浏览器对象(如果是全局变量,程序结束浏览器不会关闭,局部变量会自动关闭)
b = Chrome()# 2. 输入网址
b.get('https://www.51job.com/')# 3. 获取网页源代码
print(b.page_source)# 关闭浏览器
# b. close()

4.selenium 的常规交互

import time
from selenium.webdriver import Chrome
from selenium.webdriver.common.keys import Keys# 1. 创建浏览器
b = Chrome()# 2. 打开网页
b.get('https://www.51job.com/')# 3. 获取标签(输入框)
# search_input = b.find_element_by_id('kwdselectid')
search_input = b.find_element_by_css_selector('#kwdselectid')
# print(search_input)# 4. 在输入框中输入内容
search_input.send_keys('数据分析')# 在输入框中按回车
search_input.send_keys(Keys.ENTER)# 5. 获取网页数据
print(b.page_source)
print('--------------------------------------------------------')# 6. 获取下一页对应的标签
next = b.find_element_by_css_selector('.next')# 7. 点击按钮
next.click()
print('+++++++++++++++++++++++++++++')
time.sleep(1)
print(b.page_source)

5.selenium 的常用配置

from selenium.webdriver import Chrome, ChromeOptions
import requests
import timedef get_ip():response = requests.get('http://piping.mogumiao.com/proxy/api/get_ip_bs?appKey=775206edf3dc4329ba04568b75a66a30&count=4&expiryDate=0&format=2&newLine=3')if response.text[0] == '{':print('提取IP失败')return Nonereturn [x for x in response.text.split('\n') if x]while True:ips = get_ip()if ips:breaktime.sleep(1)
print(ips)# 1. 创建谷歌浏览器的配置对象
options = ChromeOptions()# 1) 添加取消测试环境选项
options.add_experimental_option('excludeSwitches', ['enable-automation'])# 2) 取消图片加载
options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2})# 3) 设置代理
options.add_argument(f'--proxy-server=http://{ips[0]}')b = Chrome(options=options)
b.get('https://movie.douban.com/top250')
print(b.page_source)

6.爬淘宝

from selenium.webdriver import Chrome, ChromeOptions
from selenium.webdriver.common.keys import Keysoptions = ChromeOptions()
options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2})# 用浏览器打开网页
b = Chrome(options=options)
b.get('https://www.taobao.com')# 设置cookies
cookies = eval(open('files/taobao.txt', encoding='utf-8').read())
for cookie in cookies:if cookie['secure']:b.add_cookie(cookie)b.get('https://www.taobao.com')
search_input = b.find_element_by_id('q')
search_input.send_keys('鞋子')
search_input.send_keys(Keys.ENTER)

7.获取和保存cookie值

from selenium.webdriver import Chrome, ChromeOptions
from selenium.webdriver.common.keys import Keys
import timedef save_cookie():# 打开浏览器,引导到登录页面b = Chrome()b.get('https://www.taobao.com')search_input = b.find_element_by_id('q')search_input.send_keys('鞋子')search_input.send_keys(Keys.ENTER)# 人工做登录操作(给足够的时间)# time.sleep(10)input('是否继续:')# 获取cookiecookies = b.get_cookies()# print(cookies, type(cookies))f = open('files/taobao.txt', 'w', encoding='utf-8')f.write(str(cookies))f.close()save_cookie()

day3-代理和selenium相关推荐

  1. python爬虫代理和selenium

    python爬虫代理和selenium 1.代理ip的使用 1.1 获取蘑菇代理中的代理ip def get_ip():response=requests.get('http://piping.mog ...

  2. 爬虫-代理和selenium

    使用代理ip进入网页 import requests# 1. 获取蘑菇代理中的代理IP def get_ip():response = requests.get('http://piping.mogu ...

  3. JDK动态代理和Cglib的动态代理

    2019独角兽企业重金招聘Python工程师标准>>> 最简单的是静态代理方法,即代理模式,这里就不多啰嗦了.. 重点说一下JDK的动态代理和Cglib的动态代理吧 先说JDK的,需 ...

  4. AspectJ和Spring AOP(java动态代理和CGLIB)简单介绍

    1.AOP介绍 什么是AOP:AOP就是面向切面编程.使用的背景: 1)我们的振隆维护着一千个方法,一天老板让振隆把这一千个方法都要加上事务代码(统一代码) 2)振隆咬咬牙,添加了一个新的方法,然后让 ...

  5. jdk动态代理和cglib动态代理的区别

    一.原理区别: java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理. 而cglib动态代理是利用asm开源包,对代理对象类的class文件 ...

  6. 八 web爬虫讲解2—urllib库爬虫—ip代理—用户代理和ip代理结合应用

    使用IP代理 ProxyHandler()格式化IP,第一个参数,请求目标可能是http或者https,对应设置 build_opener()初始化IP install_opener()将代理IP设置 ...

  7. Spring中AOP的两种代理方式(Java动态代理和CGLIB代理)

    第一种代理即Java的动态代理方式上一篇已经分析,在这里不再介绍,现在我们先来了解下GCLIB代理是什么?它又是怎样实现的?和Java动态代理有什么区别? cglib(Code Generation ...

  8. 代理模式——静态代理,动态代理(JDK代理和CGLib代理)

    概述 由于某些原因需要给某对象提供一个代理以控制对该对象的访问. 这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介. Java中的代理按照代理类生成时机不同又分为 ...

  9. 什么是代理模式?代理模式有什么用?通过一个小程序分析静态代理和动态代理。自己简单实现动态代理。JDK动态代理和CGLIB动态代理的区别。

    1. 代理模式有什么用 ①功能增强,在实现目标功能的基础上,又增加了额外功能.就像生活中的中介一样,他跟两边客户会有私下的交流. ②控制访问,代理不让用户直接和目标接触.就像中间商一样,他们不会让我们 ...

  10. Java动态代理的两种实现方法:JDK动态代理和CGLIB动态代理

    Java动态代理的两种实现方法:JDK动态代理和CGLIB动态代理 代理模式 JDK动态代理 CGLIB动态代理 代理模式 代理模式是23种设计模式的一种,指一个对象A通过持有另一个对象B,可以具有B ...

最新文章

  1. 简单又实用的分享!SharePoint母版页引用(实战)
  2. 从今天开始,自己做SEO。
  3. git中的gitgnore是什么? 码云gitee
  4. ITK:创建一个自定义颜色图
  5. UImenuController
  6. envers_分代缓存和Envers
  7. AlterID.exe 报错问题
  8. 数字电路基础(四) 数据分配器、数据选择器和数值比较器
  9. linux 怎么查内存大小,linux如何查内存大小
  10. 9.1 Python 绝对路径与相对路径
  11. js 字符串 转换 html标签,js 字符串转html标签
  12. NCL:Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learning,代码解读
  13. C中struct的函数的实现
  14. 数电基础 逻辑门电路 学习截图
  15. exec 和 exec_
  16. 战地之王Awesonmium
  17. C++程序设计实践里面石头剪刀布版王者农药实例
  18. 2022年深圳技能大赛-大数据技术应用职业技能竞赛介绍
  19. matlab实现聚类分析
  20. 教育行业福利来啦,海量免费PPT模板助您迎接开学季

热门文章

  1. 知名国产论坛,这下凉凉了 !
  2. 全球变暖详细题解(蓝桥杯bfs)
  3. Latch和DFF时序逻辑单元的理解?
  4. 给2014年的自己开的书单
  5. android 语音识别 之 讯飞话音移植
  6. 基于色觉(色盲)模型的色盲成因
  7. 仿支付宝php源码,thinkPHP仿华为商城带支付宝接口(完整源码+数据库脚本)
  8. CS131专题-1:卷积、互相关
  9. 电脑拓展触摸屏时,在触摸屏操作,相应的不是触摸屏
  10. golang 初始化并赋值_声明和初始化