Urllib编解码

编解码

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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值