|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
requests
在论坛里关于爬虫的示例最多的除了jiandan便是有道了,现在以有道翻译为例子,让我们来看看如何发起请求获取数据,用urllib的写法是这样子的
- import urllib.request
- import urllib.parse
- import json
- from faker import Faker
-
-
- url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
- ua = Faker().user_agent()
-
- key = input("请输入你需要翻译的内容: ")
-
- # 请求头
- headers = {
- 'User-Agent': ua,
- 'Host': 'fanyi.youdao.com',
- 'Origin': 'http://fanyi.youdao.com',
- 'Referer': 'http://fanyi.youdao.com/',
-
- }
-
-
- # 表单数据
- from_data = {
- 'i': key,
- 'from': 'UTO',
- 'to': 'UTO',
- 'smartresult': 'dict',
- 'client': 'fanyideskweb',
- 'doctype': 'json',
- 'version': '2.1',
- 'keyfrom': 'fanyi.web',
- 'action': 'FY_BY_REALTlME'
- }
-
- from_data = urllib.parse.urlencode(from_data).encode('utf-8')
- request = urllib.request.Request(url, from_data, headers)
- response = urllib.request.urlopen(request).read().decode("utf-8")
-
- target = json.loads(response)
- result = target['translateResult'][0][0]['tgt']
-
- print(result)
复制代码
要是用 requests 库写会是什么样子呢?
- # -*-coding:utf-8-*-
- import requests
- from faker import Faker
- url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"
- ua = Faker().user_agent()
- key = input("请输入你需要翻译的内容: ")
- # 请求头
- headers = {
- "User-Agent": ua,
- "Host": "fanyi.youdao.com",
- "Origin": "http://fanyi.youdao.com",
- "Referer": "http://fanyi.youdao.com/",
- }
- # 表单数据
- from_data = {
- "i": key,
- "from": "UTO",
- "to": "UTO",
- "smartresult": "dict",
- "client": "fanyideskweb",
- "doctype": "json",
- "version": "2.1",
- "keyfrom": "fanyi.web",
- "action": "FY_BY_REALTlME",
- }
- res = requests.get(url , headers=headers, params=from_data)
- target = res.json()
- result = target["translateResult"][0][0]["tgt"]
- print(result)
复制代码
可以看到,后者比前者简便许多。当然,它还有更多的优点。
requests最常用的方法为 get() 与 post(),使用方式为
- requests.get(url) / requests.post(url)
复制代码 ,两者等价于
- requests.request("get", url) / requests.request("post", url)
复制代码
这些方法会返回一个 Response 对象,该对象常用方法与属性为
- res.text
- res.content
- res.json()
- res.encoding
- res.status_code
- ....
复制代码
|
|