编解码
1.get请求方式:urllib.parse.quote()
import urllib.parse
url = 'http://www.baidu.com/s?wd='
# 将刘亦菲三个字变成unicode编码的格式
# 我们需要依赖于urllib.parse
name = urllib.parse.quote('刘亦菲')
url = url + name
2.get请求方式:urllib.parse.urlencode()
# url = 'http://www.baidu.com/s?wd='
base_url = 'http://www.baidu.com/s?'
data = {
'wd': '刘亦菲',
'gender': '女'
}
new_data = urllib.parse.urlencode(data)
url = base_url + new_data
data的封装是在post请求或者get请求中涉及变量才用到
3.post请求方式
post请求百度翻译
import urllib.request
import urllib.parse
import json
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/116.0.0.0 Safari/537.36'
}
data = {
'kw': 'spider'
}
# post请求的参数,必须要进行编码
data = urllib.parse.urlencode(data).encode('utf-8')
# post的请求的参数 是不会拼接在url的后面的 而是需要请求对象定制的参数中
request = urllib.request.Request(url=url, data=data, headers=headers)
response = urllib.request.urlopen(request)
content = response.read().decode('utf-8')
# print(content)
# 字符串--》json对象
obj = json.loads(content)
print(obj)
百度翻译之详情翻译页面
import urllib.request
import urllib.parse
import json
url = 'https://fanyi.baidu.com/v2transapi?from=en&to=zh'
# ctrl+r替换上面输入(.*?):(.*)下一行填写'$1': '$2',
# 一般网站要求有cookie和UA
headers = {
# 'Accept': '*/*',
# 'Accept-Encoding':'gzip, deflate, br',
# 'Accept-Language': 'zh-CN,zh;q=0.9',
# 'Acs-Token': '1694770192997_1694770204963_b8/xAGzSQ3Jpwa4Kg/m13jd+XM2gAxdpx3PJNIVlrI1Hgei/2UiwqHbaNfZRLjK6D2KfL2sipJ2Xp51F/VX3Nxt3upot4BIKbb3p/aTmV+Q8A446I9V3VyYRLajNF1BHU2I0dzPpCMBhAIjU42ytvsY2ZsJBJ+3ij/YQiNQB2Ph4x7jiPRBd9+cbtAMY6Q4mZa2XfJk7o7oq91MLYJ8Tx2yAS9T7ZeFpA/Vfwur10DKUxIUQRMeMLkCb4otwZ5TDf9FAlqZEtBa3i4c6JyWpOGPGVPpvcx/roqEL9Jy6BeXGhg23RXIONoq485CcKInVAWbHoiwCIbfaXwnMgaGe4opBdXkx2UUAE7h8x+I6iSxgNU3ioO61jsvR/2z1Gj4T+AFFgntlOxoR4cF6XRadfVMi+kdHF9NHxY7qMTiHZ6fAH2XEpqHl0WV/6feAn2aKiTw1raqlc0OgEZjndzfWzzwJtSmCsmsen/p8AcWd1zr3B90av8axb5oqC6rGyu3s',
# 'Connection': 'keep-alive',
# 'Content-Length': '152',
# 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Cookie': 'BIDUPSID=42683067CCF29695FD9ACA9BFF54931F; PSTM=1694483572; BAIDUID=42683067CCF29695BF548F434573CF15:FG=1; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; H_PS_PSSID=39315_39366_39354_39097_39198_39261_39358_39233_26350_22157; delPer=0; PSINO=2; BA_HECTOR=2g242ka58g802g0g0l808k2f1ig7g4s1o; ZFY=A8PjUOVU39ZpvpyCAlrCkJli1u8BfcAenHpQ9C94tUQ:C; BAIDUID_BFESS=42683067CCF29695BF548F434573CF15:FG=1; Hm_lvt_64ecd82404c51e03dc91cb9e8c025574=1694766755; APPGUIDE_10_6_2=1; REALTIME_TRANS_SWITCH=1; FANYI_WORD_SWITCH=1; HISTORY_SWITCH=1; SOUND_SPD_SWITCH=1; SOUND_PREFER_SWITCH=1; BCLID=12100690674218800146; BCLID_BFESS=12100690674218800146; BDSFRCVID=LeLOJexroG0ZmSbq32FthCxATuweG7bTDYrEOwXPsp3LGJLVFakFEG0Pts1-dEu-S2OOogKKBeOTHn0F_2uxOjjg8UtVJeC6EG0Ptf8g0M5; BDSFRCVID_BFESS=LeLOJexroG0ZmSbq32FthCxATuweG7bTDYrEOwXPsp3LGJLVFakFEG0Pts1-dEu-S2OOogKKBeOTHn0F_2uxOjjg8UtVJeC6EG0Ptf8g0M5; H_BDCLCKID_SF=tRAOoC_-tDvDqTrP-trf5DCShUFsbqvCB2Q-XPoO3KJADfOPKj-h3jkJLp7CLnQf5mkf3fbgy4op8P3y0bb2DUA1y4vp0toW3eTxoUJ2-KDVeh5Gqq-KXU4ebPRi3tQ9QgbXopQ7tt5W8ncFbT7l5hKpbt-q0x-jLTnhVn0MBCK0hD89DjKKD6PVKgTa54cbb4o2WbCQBJA28pcN2b5oQT8lhJbab6ttQ6735-npQP5beq06-lOUWJDkXpJvQnJjt2JxaqRC3JjOsl5jDh3MKToDb-oteltHB2Oy0hvc0J5cShnkDMjrDRLbXU6BK5vPbNcZ0l8K3l02V-bIe-t2XjQhDH-OJ6DHtJ3aQ5rtKRTffjrnhPF3XTObXP6-hnjy3bRzWxOt-C8hSDbdLn7N3bLWbttf5q3Ry6r42-39LPO2hpRjyxv4Q4_fQ4oxJpOJ-bCL0p5aHx8K8p7vbURvL4Lg3-7XJU5dtjTO2bc_5KnlfMQ_bf--QfbQ0hOhqP-jBRIEoC8ytC_KhCvPKITD-tFO5eT22-us-e6C2hcHMPoosIJLhqbDKjJ03J533bvCQTTf0l05KfbUotoHXnJi0btQDPvxBf7p3D6WKq5TtUJMqIDzbMohqqJXXPnyKMni0DT9-pn8tpQrh459XP68bTkA5bjZKxtq3mkjbPbDfn028DKuDj-WDjjXDGRabK6aKC5bL6rJabC38b5sXU6q2bDeQN3z2lJa-RAHKtbS0-nNS-56bftb-l0vWq54WbbvLT7johRTWqR4sRjcQxonDh83KNLLKUQtHGAH2h7O5hvvER5O3M7_DMKmDloOW-TB5bbPLUQF5l8-sq0x0bOte-bQXH_E5bj2qRuOVCLM3f; H_BDCLCKID_SF_BFESS=tRAOoC_-tDvDqTrP-trf5DCShUFsbqvCB2Q-XPoO3KJADfOPKj-h3jkJLp7CLnQf5mkf3fbgy4op8P3y0bb2DUA1y4vp0toW3eTxoUJ2-KDVeh5Gqq-KXU4ebPRi3tQ9QgbXopQ7tt5W8ncFbT7l5hKpbt-q0x-jLTnhVn0MBCK0hD89DjKKD6PVKgTa54cbb4o2WbCQBJA28pcN2b5oQT8lhJbab6ttQ6735-npQP5beq06-lOUWJDkXpJvQnJjt2JxaqRC3JjOsl5jDh3MKToDb-oteltHB2Oy0hvc0J5cShnkDMjrDRLbXU6BK5vPbNcZ0l8K3l02V-bIe-t2XjQhDH-OJ6DHtJ3aQ5rtKRTffjrnhPF3XTObXP6-hnjy3bRzWxOt-C8hSDbdLn7N3bLWbttf5q3Ry6r42-39LPO2hpRjyxv4Q4_fQ4oxJpOJ-bCL0p5aHx8K8p7vbURvL4Lg3-7XJU5dtjTO2bc_5KnlfMQ_bf--QfbQ0hOhqP-jBRIEoC8ytC_KhCvPKITD-tFO5eT22-us-e6C2hcHMPoosIJLhqbDKjJ03J533bvCQTTf0l05KfbUotoHXnJi0btQDPvxBf7p3D6WKq5TtUJMqIDzbMohqqJXXPnyKMni0DT9-pn8tpQrh459XP68bTkA5bjZKxtq3mkjbPbDfn028DKuDj-WDjjXDGRabK6aKC5bL6rJabC38b5sXU6q2bDeQN3z2lJa-RAHKtbS0-nNS-56bftb-l0vWq54WbbvLT7johRTWqR4sRjcQxonDh83KNLLKUQtHGAH2h7O5hvvER5O3M7_DMKmDloOW-TB5bbPLUQF5l8-sq0x0bOte-bQXH_E5bj2qRuOVCLM3f; Hm_lpvt_64ecd82404c51e03dc91cb9e8c025574=1694770192; ab_sr=1.0.1_Y2FkMjA0NDgxZDcyOTU1OGYwNzMxYWIwNzY5MTdmMTBkYzk1M2MyNThhNjYxZGI5MjYzYTBhY2Y3M2I1N2M3NGRhN2EwNTBjMjA1NWM2NDdkODlmOTA3ZWRjMzBkZGQ4NmUzZmFjMGNhOWI4ZDRiYjE0ZTZmNTAwMmU4ODY2YTgxODEwYTViNWJhNGVlYWRhZTMxNmY1OTY0MTg4YTdiNA==',
# 'Host': 'fanyi.baidu.com',
# 'Origin': 'https://fanyi.baidu.com',
# 'Referer': 'https://fanyi.baidu.com/?aldtype=16047',
# 'Sec-Ch-Ua': '"Chromium";v="116", "Not)A;Brand";v="24", "Google Chrome";v="116"',
# 'Sec-Ch-Ua-Mobile': '?0',
# 'Sec-Ch-Ua-Platform': '"Windows"',
# 'Sec-Fetch-Dest': 'empty',
# 'Sec-Fetch-Mode': 'cors',
# 'Sec-Fetch-Site': 'same-origin',
# 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',
# 'X-Requested-With': 'XMLHttpRequest',
}
# 把网页中network中form data全部数据放入字典中注意删掉多余空格
data = {
'from': 'en',
'to': 'zh',
'query': 'love',
'transtype': 'realtime',
'simple_means_flag': '3',
'sign': '198772.518981',
'token': 'be0e0941e1a9cbc688efe78ab5a8c34f',
'domain': 'common',
'ts': '1694770204950',
}
data = urllib.parse.urlencode(data).encode('utf-8')
request = urllib.request.Request(url=url, data=data, headers=headers)
response = urllib.request.urlopen(request)
content = response.read().decode('utf-8')
obj = json.loads(content)
print(obj)