[](()二、在selenium使用代理IP实战(一)
设置代理基本格式:
import requests
proxies = {
'http': 'http://222.89.32.159:21079',
'https': 'http://222.89.32.159:21079'
}
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"
}
res = requests.get(url=urls,headers=headers,proxies=proxies)
我想了半天没想好到底哪些网站反爬强,所以我就随便找一个网站来测试了,你可以再去尝试逛一下自己学校的教务管理系统,12360,facebook等…
目标网址:
https://www.taobao.com/
所以定位就很容易:
driver.find_element_by_name('q')
之前写过一次使用代理玩爬虫,是requests模块,但是作为个人,我越往后面学,发现selenium用得反而越来越多,requests被逐渐抛弃一般,所以这里补充一个selenium添加代理。
方式很简单:
ops.add_argument('--proxy-server=http://%s' % a) #添加代理
注意这里的a格式为:ip:port
注意: 使用代理ip需要安装模块selenium-wire:
pip install selenium-wire
你应该是:
from seleniumwire import webdriver
而不是:
from selenium import webdriver
比如在X宝搜索:XX手机
完整代码:
from selenium import webdriver
from fake_useragent import UserAgent
from selenium.webdriver.chrome.options import Options
headers = {'User-Agent': UserAgent().random}
ops = Options()
driver = webdriver.Chrome(r'D:\360安全浏览器下载\chromedriver.exe')
api_url = '让你复制的代理api链接'
driver.get(api_url)
a = driver.find_element_by_xpath('/html/body/pre').text # 获取代理
ops.add_argument('--proxy-server=http://%s' % a) #添加代理
driver.delete_all_cookies() #清楚cookies
driver.get('https://www.taobao.com/')
driver.find_element_by_name('q').send_keys('华为手机')
接下来是点击按钮:
确定点击的地方元素,然后使用click点击即可:
from selenium.webdriver import ActionChains
b= driver.find_element_by_class_name('search-button') #定位搜索
ActionChains(driver).click(b).perform()
可能是触发了反扒机制吗?需要登录,我也不知道我的X宝账号密码,随便演示输入一下…剩下的自己操作
这里是账号密码分析:
所以定位账号密码如下,账号我设置的输入:chuanchuan,密码设置的输入:123456 瞎编的,具体根据你的实际账号来操作,我就不讲下去了,就是定位定位点点点
driver.find_element_by_name('fm-login-id').send_keys('chuanchuan') # 输入账号
driver.find_element_by_name('fm-login-password').send_keys('123456') # 输入密码
效果如下:
[](()三、在selenium使用代理IP实战(二)
比如:
https://www.facebook.com/
分析账号密码:
代码为:
from fake_useragent import UserAgent
import requests
from selenium import webdriver
from selenium.webdriver import ChromeOptions
headers = {'User-Agent': UserAgent().random}
api_url = '复制你的api'
res = requests.post(api_url, headers=headers, verify=True)
PROXY = res.text
print(PROXY)
ops = ChromeOptions()
ops.add_argument('--proxy-server=%s' % PROXY) # 添加代理
driver = webdriver.Chrome(r'D:\360安全浏览器下载\chromedriver.exe')
driver.get("https://m.facebook.com/")
driver.find_element_by_name('email').send_keys("川川")
driver.find_element_by_name('pass').send_keys('123456')
效果如下:
后续操作不继续演示,可以根据我讲的selenium知识点自行操作,无非就是点点点定位定位保存保存。
[](()三、selenium单个元素定位实战复习
[](()3.1 定位填写
以微软搜索引擎为例:
https://cn.bing.com/?mkt=zh-CN
分析:
所以:
from selenium import webdriver
driver = webdriver.Chrome(r'D:\360安全浏览器下载\chromedriver.exe')
driver.get('https://cn.bing.com/?mkt=zh-CN')
driver.find_element_by_name('q').send_keys('川川菜鸟')
如下: