1.selenium交互
无页面浏览器速度更快
#配置好的自己不用管
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('‐‐headless')
chrome_options.add_argument('‐‐disable‐gpu')
# path是你自己的chrome浏览器的文件路径
path = r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe'
chrome_options.binary_location = path
browser = webdriver.Chrome(chrome_options=chrome_options)
browser.get('http://www.baidu.com/')
from selenium import webdriver
#这个是浏览器自带的 不需要我们再做额外的操作
#配置的封装
from selenium.webdriver.chrome.options import Options
def share_browser():
#初始化 chrome_options = Options()
chrome_options.add_argument('‐‐headless')
chrome_options.add_argument('‐‐disable‐gpu')
#浏览器的安装路径 打开文件位置
#这个路径是你谷歌浏览器的路径
path = r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe'
chrome_options.binary_location = path
browser = webdriver.Chrome(chrome_options=chrome_options)
return browser
#封装的调用
from handless import share_browser
browser = share_browser()
browser.get('http://www.baidu.com/')
browser.save_screenshot('handless1.png')
#1.练习
from selenium import webdriver
path='C:\\Users\\nsy\\Downloads\\chromedriver-win64\\chromedriver.exe'
browswe=webdriver.Chrome(path)
url='http://www.baidu.com'
browser.get(url)
input=browser.find_element_by_id('su')
#获取标签属性
print(input.get_attribute('class'))
#获取标签名字
print(input.tag_name)
#获取元素文本
a=browser.find(elempent_by_link_text('新闻'))
print(a.text)
#2.练习
from selenium import webdriver
#创建浏览器对象
path='chromedriver.exe'
browser.get(url)
import time
time.sleep(2)
#获取文本框对象
input=browser.find_element_by_id('kw')
#在文本框中输入周杰伦
input.send_keys('周杰伦')
time.sleep(2)
#获取百度一下的按钮
button=browser.find_element_by_id('su')
#点击按钮
button.click()
time.sleep(2)
#滑倒底部
js_bottom='document.documentElement.scrollTop=100000'
browser.execute_script(js_bottom)
time.sleep(2)
#获取下一页按钮
next.click()
time.sleep(2)
#退出
browser.quit()
#3.练习hadless selenium
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
def share_browser():
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
# path是你自己的chrome浏览器的文件路径
path = r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe'
chrome_options.binary_location = path
browser = webdriver.Chrome(chrome_options=chrome_options)
return browser
browser share_browser()
url ='https://www.baidu.com'
browser.get(url)
#1.练习request的使用
url='http://www.baidu.com'
response=requests.get(url=url)
# 一个类型和六个属性
# Response类型
# print(type(response))
# 设置响应的编码格式
# response.encoding = 'utf-8'
# 以字符串的形式来返回了网页的源码
# print(response.text)
# 返回一个url地址
# print(response.url)
# 返回的是二进制的数据
# print(response.content)
# 返回响应的状态码
# print(response.status_code)
#返回的是响应头
print(response.headers)
#2.request get请求
# urllib
# (1) 一个类型以及六个方法
# (2)get请求
# (3)post请求 百度翻译
# (4)ajax的get请求
# (5)ajax的post请求
# (6)cookie登陆 微博
# (7)代理
# requests
# (1)一个类型以及六个属性
# (2)get请求
# (3)post请求
# (4)代理
# (5)cookie 验证码
import requests
url='https://www.baidu.com/s'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'
}
data={
'wd':'北京'}
#url 请求资源路径
#params 参数
#kwargs 字典
response=requests.get(url=url,params=data,headers=headers)
content=response.text
print(content)
# 总结:
# (1)参数使用params传递
# (2)参数无需urlencode编码
# (3)不需要请求对象的定制
# (4)请求资源路径中的?可以加也可以不加
#3.练习
import requests
url='https://fanyi.baidu.com/sug'
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'
}
data={'kw':'eye'}
#url请求地址
#data请求参数
#kwargs 字典
response=requests.post(url=url,data=data,headers=headers)
content=response.text
import json
obj=json.loads(content,encoding='utf-8')
print(obj)
# 总结:
# (1)post请求 是不需要编解码
# (2)post请求的参数是data
# (3)不需要请求对象的定制
#4.练习
import requests
url='http://www.baidu.com/s?'
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36',
}
data={
'wd':'ip'}
proxey={'http':'212.129.251.55:16816'}
response=requests.get(url=url,params=data,headers=headers,proxies=proxy)
content=response.text
with open('daili.html','w',encoding='utf-8')as fp:
fp.write(content)
#5.练习 超级鹰的使用方法方法封装好了,都是现成的,用户名什么改改就行了,不用管
#!/usr/bin/env python
# coding:utf-8
import requests
from hashlib import md5
class Chaojiying_Client(object):
def __init__(self, username, password, soft_id):
self.username = username
password = password.encode('utf8')
self.password = md5(password).hexdigest()
self.soft_id = soft_id
self.base_params = {
'user': self.username,
'pass2': self.password,
'softid': self.soft_id,
}
self.headers = {
'Connection': 'Keep-Alive',
'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)',
}
def PostPic(self, im, codetype):
"""
im: 图片字节
codetype: 题目类型 参考 http://www.chaojiying.com/price.html
"""
params = {
'codetype': codetype,
}
params.update(self.base_params)
files = {'userfile': ('ccc.jpg', im)}
r = requests.post('http://upload.chaojiying.net/Upload/Processing.php', data=params, files=files, headers=self.headers)
return r.json()
def ReportError(self, im_id):
"""
im_id:报错题目的图片ID
"""
params = {
'id': im_id,
}
params.update(self.base_params)
r = requests.post('http://upload.chaojiying.net/Upload/ReportError.php', data=params, headers=self.headers)
return r.json()
if __name__ == '__main__':
chaojiying = Chaojiying_Client('超级鹰用户名', '超级鹰用户名的密码', '96001') #用户中心>>软件ID 生成一个替换 96001
im = open('a.jpg', 'rb').read() #本地图片文件路径 来替换 a.jpg 有时WIN系统须要//
print(chaojiying.PostPic(im, 1902))