环境说明
系统是windows10,python版本是32位3.7版本。所有代码执行的案例来自于B站视频讲解内容,链接在路飞IT学城,但可能章节不是完全对的上的,仅是自己学习时的一些实验。
requests模块的简单用法
1. get() :以获取搜狗搜索首页为例
# MyGoal: get sougou page data
import requests
import io
import sys
if __name__ == "__main__":
# step1:point the url
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='gb18030')
url = 'https://123.sogou.com/'
# step2:send request,'get'will return an response object
response = requests.get(url=url, verify=False)
# step3:get response, text is a string
page_text = response.text
print(page_text)
# step4 keep storing
with open('./sougou.html', 'w',encoding='utf-8') as fp:
fp.write(page_text)
print('over!')
2. post():以百度翻译为例
# 在百度翻译栏中每输入一个字符就会发起一个Ajax请求 通过查看AJAX XHR文件发现是一个携带参数的post请求
import requests
import json
from fake_useragent import UserAgent
if __name__ == "__main__":
# 通过抓包工具获得并指定URL
post_url = 'https://fanyi.baidu.com/sug'
# UA伪装
headers = {
'User-Agent': UserAgent().random
}
# 动态搜索
inputdata = input("Enter the word: ")
data = {
'kw':inputdata
}
# 创建请求 返回json对象
response = requests.post(url=post_url, data=data, headers=headers)
content = response.json()
fp = open(inputdata+'.json', 'w', encoding='utf-8')
json.dump(content, fp, ensure_ascii=False)
print("OK")
3. cookie与session:以17k小说网为例
什么时候需要用session会话呢?就是需要登录后才能进行操作的。可以认为session 表示一连串的会话并能记住上下文。 在登录的过程中要获得账号名和密码,通常抓不到login的包,需要Preserve log,然后再输入登录信息。正常登录后就看不见login这个请求了,但勾选Preserve log后可以看见,并获得账号名和密码。这里以17k小说网为例获取书架的内容。
import requests
from fake_useragent import UserAgent
from lxml import etree
if __name__ == "__main__":
url = 'https://passport.17k.com/ck/user/login'
data = {
'loginName': '输入用户名',
'password': '输入用户密码'
}
# 1.登录得到cookie
session = requests.session()
response = session.post(url=url, data=data)
cookie = response.cookies
# 2.用session发送请求
session_url = 'https://user.17k.com/ck/author/shelf?page=1&appKey=2406394919'
session_res = session.get(url=session_url)
headers = {
'User-Agent':UserAgent().random,
'Cookie': '复制cookie进来'
}
res = requests.get(url=session_url, headers=headers)
print(res.json())