1.requests的post请求
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# 1、requests 的post请求
import
requests
import
re
headers
=
{
'User-agent'
:
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.80 Safari/537.36'
}
response
=
requests.get(url
=
'https://github.com/login'
,headers
=
headers)
print
(response.text)
把login页返回的cookies信息转换成字典
login_cookies
=
response.cookies.get_dict()
authenticity_token
=
re.findall(
' name="authenticity_token" value="(.*?)"'
,response.text,re.S)[
0
]
print
(authenticity_token)
#拼接请求头信息
headers2
=
{
'Referer'
:
'https://github.com/login'
,
'User-agent'
:
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.80 Safari/537.36'
}
#拼接请求体信息
form_data
=
{
'commit'
:
'Sign in'
,
"utf-8"
:
"✓"
,
"authenticity_token"
:authenticity_token,
"login"
:
"852653835"
,
"password"
:
"******"
,
"webauthn-support"
:
"supported"
}
# 往session发送请求,携带请求头、请求体、login页的cookies信息
response2
=
requests.post(url
=
'https://github.com/session'
,data
=
form_data,headers
=
headers2,cookies
=
login_cookies)
print
(response2.status_code)
with
open
(
'github.html'
,
'w'
,encoding
=
'utf-8'
)as f:
f.write(response2.text)
#响应response
import
requests
headers
=
{
'User-Agent'
:
'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36'
,
}
#
response
=
requests.get(
'https://www.github.com'
, headers
=
headers)
print
(response.status_code)
# 获取响应状态码
print
(response.url)
# 获取url地址
print
(response.text)
# 获取文本
print
(response.content)
# 获取二进制流
print
(response.headers)
# 获取页面请求头信息
print
(response.history)
# 上一次跳转的地址
print
(response.cookies)
# # 获取cookies信息
print
(response.cookies.get_dict())
# 获取cookies信息转换成字典
print
(response.cookies.items())
# 获取cookies信息转换成字典
print
(response.encoding)
# 字符编码
print
(response.elapsed)
# 访问时间
|
2.requests的高级用法
1
2
3
4
5
6
7
8
9
10
|
# 2、requests高级用法
# https=http+ssl
import
requests
#王音频地址发送get请求
url
=
'http://hc.yinyuetai.com/uploads/videos/common/3B7201685F78BF2954FEEB32CB6EBD82.mp4'
response
=
requests.get(url,stream
=
True
)
#stream=True把content设置为一个迭代器对象
print
(response.content)
with
open
(
'music.mp4'
,
'wb'
)as f:
for
content
in
response.iter_content():
f.write(content)
|
3.selenium模块
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
'''
'''
例
1
'''
from
selenium
import
webdriver
# 用来驱动浏览器的
from
selenium.webdriver
import
ActionChains
# 破解滑动验证码的时候用的 可以拖动图片
from
selenium.webdriver.common.by
import
By
# 按照什么方式查找,By.ID,By.CSS_SELECTOR,By.ClassName
from
selenium.webdriver.common.keys
import
Keys
# 键盘按键操作
from
selenium.webdriver.support
import
expected_conditions as EC
# 和下面WebDriverWait一起用的
from
selenium.webdriver.support.wait
import
WebDriverWait
# 等待页面加载某些元素
#
import
time
# 通过谷歌浏览器驱动打谷歌浏览器
# 1、
webdriver.Chrome(r
'C:\Users\85265\Downloads\chromedriver.exe'
)
chrome
=
webdriver.Chrome(r
'C:\Users\85265\Downloads\chromedriver.exe'
)
chrome.get(
'https://www.cnblogs.com/kermitjam'
)
#2、
chrome
=
webdriver.Chrome()
若
try
出现异常
try
:
驱动一参数对象,驱动二等待时间
wait
=
WebDriverWait(chrome,
10
)
访问百度
chrome.get(
'https://www.baidu.com'
)
查找
input
输入窗
input_tag
=
wait.until(EC.presence_of_element_located(
此处可以写一个参数
(By.
ID
,
'kw'
)))
#没ID找class
搜索一拳超人
input_tag.send_keys(
'一拳超人'
)
按键盘回车键
input_tag.send_keys(Keys.ENTER)
time.sleep(
3
)
finally
:
chrome.close()
from
selenium
import
webdriver
# 用来驱动浏览器的
from
selenium.webdriver
import
ActionChains
# 破解滑动验证码的时候用的 可以拖动图片
from
selenium.webdriver.common.by
import
By
# 按照什么方式查找,By.ID,By.CSS_SELECTOR,By.ClassName
from
selenium.webdriver.common.keys
import
Keys
# 键盘按键操作
from
selenium.webdriver.support
import
expected_conditions as EC
# 和下面WebDriverWait一起用的
from
selenium.webdriver.support.wait
import
WebDriverWait
# 等待页面加载某些元素
import
time
通过谷歌浏览器驱动打开谷歌浏览器
1
、
webdriver.Chrome(r
'C:\Users\85265\Downloads\chromedriver.exe'
)
chrome
=
webdriver.Chrome(r
'C:\Users\85265\Downloads\chromedriver.exe'
)
chrome.get(
'https://www.cnblogs.com/kermitjam'
)
#2、
chrome
=
webdriver.Chrome()
若
try
出现异常
try
:
显示等待(等待某个元素加载),驱动一参数对象,驱动二等待时间
wait
=
WebDriverWait(chrome,
10
)
访问百度
chrome.get(
'https://www.jd.com'
)
查找
input
输入窗
input_tag
=
wait.until(EC.presence_of_element_located(
此处可以写一个参数
(By.
ID
,
'key'
)))
#没ID找class
搜索唐诗三百首
input_tag.send_keys(
'唐诗三百首'
)
根据
class
属性名查找标签
search_button
=
wait.until(EC.presence_of_element_located((By.CLASS_NAME,
'button'
)))
search_button.click()
time.sleep(
8
)
finally
:
chrome.close()
|
4.京东实例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
# 标签中首选id
# 目的就是查找唯一的属性,来定位
from
selenium
import
webdriver
# 用来驱动浏览器的
from
selenium.webdriver
import
ActionChains
# 破解滑动验证码的时候用的 可以拖动图片
from
selenium.webdriver.common.by
import
By
# 按照什么方式查找,By.ID,By.CSS_SELECTOR
from
selenium.webdriver.common.keys
import
Keys
# 键盘按键操作
from
selenium.webdriver.support
import
expected_conditions as EC
# 和下面WebDriverWait一起用的
from
selenium.webdriver.support.wait
import
WebDriverWait
# 等待页面加载某些元素
from
selenium
import
webdriver
import
time
# 通过谷歌浏览器驱动打开谷歌浏览器
# 绝对路径有可能有.exe,有可能没有
# 驱动浏览器的一种方式
chrome
=
webdriver.Chrome(r
'D:\360安全浏览器下载\chromedriver_win32\chromedriver'
)
# 驱动浏览器的另一种方式,将chromedriver.exe放入到python解释器的scipt文件中,;之后还要进行环境变量的配置。
# 往博客园主页发送get请求
try
:
# chrome.get('https://www.cnblogs.com/')
# 访问百度
# chrome是一个驱动对象,里面包含其他函数
# 参数1:驱动对象。参数2:等待
wait
=
WebDriverWait(chrome,
10
)
chrome.get(
'https://www.jd.com/'
)
# 查找input输入框
#!!!!!!注意!!!!!EC.presence_of_element_located((By.ID,"kw"))里面是写的元组,
#参数1.查找属性的方式,参数2:属性的名字
input_tag
=
wait.until(EC.presence_of_element_located((By.
ID
,
"key"
)))
# kw是id的属性
# 3.搜索一拳超人
input_tag.send_keys(
'唐诗三百首'
)
# 4.按键盘回车键
search_button
=
wait.until(EC.presence_of_element_located((By.CLASS_NAME,
"button"
)))
search_button.click()
time.sleep(
20
)
# 无论发生什么异常都会关闭浏览器
finally
:
# 关闭浏览器
chrome.close()
|
5.作业
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
from
selenium
import
webdriver
import
time
driver
=
webdriver.Chrome()
driver.maximize_window()
try
:
driver.get(
'https://dig.chouti.com/'
)
driver.implicitly_wait(
10
)
time.sleep(
5
)
login_btn
=
driver.find_element_by_id(
'login_btn'
)
login_btn.click()
time.sleep(
2
)
phone
=
driver.find_element_by_class_name(
'login-phone'
)
phone.send_keys(
'216635131365'
)
pwd
=
driver.find_element_by_class_name(
'pwd-password-input'
)
pwd.send_keys(
'ddgsgddg'
)
login_submit
=
driver.find_element_by_class_name(
'btn-large'
)
login_submit.click()
time.sleep(
20
)
except
Exception as e:
print
(e)
finally
:
driver.close()
|