1 、安装可执行程序html
2 、配置环境变量python
根据环境变量的前后顺序
去查找可执行程序文件,若是查找到就执行,若是查找不到就报错。web
3 、python的多版本兼容问题ajax
修改可执行程序的文件名,再配置环境变量json
4 、hash案例cookie
import hashlib def md5_encryption(value): """ 对字符串进行加密 :param value:待加密的字符串 :return:进行md5加密后的值 """ md5 = hashlib.md5() md5.update(value.encode('utf-8')) return md5.hexdigest()
1、 get请求dom
(1)、使用步骤ide
import requests # 一、导包 response = requests.get(url) # 二、发送请求,获取响应 response.text # 三、获取响应内容
(2)、get请求详细参数post
requests.get( url=url, # 请求的url headers=headers # 请求头【字典】 params=params # 请求参数【字典】 ) # 返回一个response对象
(3)、response对象的属性编码
获取响应正文的内容
response.text
:获取字符串格式的响应正文内容response.content
:获取二进制格式的响应正文内容获取响应正文的编码类型:response.encoding
之因此可以经过response.text
获取响应内容的字符串,是由于requests底层
使用response.encoding
来将正文的二进制
类型变成字符串
的。
其余
response.status_code
:状态码response.headers
:响应头乱码问题的解决办法
产生乱码的缘由就编解码时不一致,能够经过如下两种方法解决:
get请求案例
案例一:将百度贴吧的前10页保存到本地
import requests import os base_url = 'http://tieba.baidu.com/f?' kw = '刘亦菲' # 搜索的关键词 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36', } filename = './tieba/' + kw # 爬取的网页存放路径 if not os.path.exists(filename): # 若是不存在存放该网页的目录,就建立此目录 os.mkdir(filename) # 将网页的前10页保存到本地 for i in range(10): params = { 'kw': kw, 'ie': 'utf-8', 'pn': i*50 } response= requests.get(url=base_url, headers=headers, params=params) with open(filename+'/'+kw+str(i+1)+'.html', 'w', encoding='utf-8') as f: f.write(response.text)
案例二:百度翻译
import requests base_url = 'https://fanyi.baidu.com/sug/' kw = 'product' data = { 'kw': kw } headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36', 'x-requested-with': 'XMLHttpRequest', 'cookie': cookie; 'origin': 'https://fanyi.baidu.com', 'referer': 'https://fanyi.baidu.com/', 'content-length': str(len(str(data))), # 参数内容中全部全部字符的长度 } response = requests.post(url=base_url, headers=headers, data=data) # 若是response的内容是json数据,能够经过reponse.json()直接获取json数据,返回的是一个字典或者list json_data = response.json() res = '' for data in json_data['data']: res += data['v'] + '\n' print(res)
2、 post请求
(1)、post请求详细参数
requests.get( url=url, # 请求的url headers=headers # 请求头【字典】 data=data # 请求参数【字典】 ) # 返回一个response对象
一般不少网页是经过Ajax发送post请求获取数据,此时须要找发送Ajax请求携带的数据,也就是请求参数。
找请求参数有两种方法:
案例一:有道翻译
import requests import hashlib import time import random base_url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule' kw = 'run' def get_md5(value): md5 = hashlib.md5() md5.update(value.encode('utf-8')) return md5.hexdigest() """ 因为salt、sign和ts这3个参数由fanyi.js文件中js动态生成的 所以在发送post请求前,须要去动态地生成它们的值 salt = "" + (new Date).getTime() + parseInt(10 * Math.random(), 10) ts = "" + (new Date).getTime() sign = n.md5("fanyideskweb" + e + salt + "n%A-rKaT5fb[Gy?;N5@Tj") """ salt = str(time.time()*1000) + str(random.randint(1, 10)) sign = get_md5("fanyideskweb" + kw + salt + "n%A-rKaT5fb[Gy?;N5@Tj") ts = str(int(time.time() * 1000)) data = { 'i': kw, 'from': 'AUTO', 'to': 'AUTO', 'smartresult': 'dict', 'client': 'fanyideskweb', 'salt': salt, 'sign': sign, 'ts': ts, 'bv': '710f3e24cb0088b9d9ea448919deb3bb', 'doctype': 'json', 'version': '2.1', 'keyfrom': 'fanyi.web', 'action': 'FY_BY_REALTlME' } headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36', 'X-Requested-With': 'XMLHttpRequest', 'Origin': 'http://fanyi.youdao.com', 'Referer': 'http://fanyi.youdao.com/', 'Cookie': 'OUTFOX_SEARCH_USER_ID_NCOO=1291930369.870429; _ga=GA1.2.27463077.1574943185; _gid=GA1.2.609141079.1574943185; OUTFOX_SEARCH_USER_ID="10809467@10.108.160.18"; JSESSIONID=aaa7W8E0vjuZ-5hRbD26w; ___rl__test__cookies=1575019115684', 'Content-Length': str(len(str(data))), } response = requests.post(url=base_url, headers=headers, data=data) json_data = response.json() res = '' for data in json_data['smartResult']['entries']: res += data print(res)