本文试用环境:python3
比urllib更强大的python爬虫请求库requests,Cookies、登录验证、代理设置等操作都有很好的解决
安装:
pip install requests
引入:
import requests
目录
1.4、抓取网页通常加入headers、timeout、time.sleep信息
2.6、其他:SSL 证书验证、文件上传、OAuth 认证等
一、基本使用
1.1、一句话的请求
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# pip install requests #安装
import requests #导入
r=requests.get("https://me.csdn.net/column/weixin_41685388")
#r.encoding ="utf-8" #当出现中文乱码问题时使用
print(type(r)) #类型:<class 'requests.models.Response'>
print(r. status_code)#状态:200 或者404、500...等
print(type(r.text)) #响应体的类型:<class 'str'>
print(r.cookies) #cookies:<RequestsCookieJar[<Cookie(.*)/>]>
print(r.text) #页面内容
#使用get()方法成功实现一个GET请求,这倒不算什么,
# 更方便之处在于其他的请求类型依然可以用一句话来完成,示例如下:
r1=requests.post('http://httpbin.org/post')
r2=requests.put('http://httpbin.org/put')
r3=requests.delete('http://httpbin.org/delete')
r4=requests.head('http://httpbin.org/get')
r5=requests.options("http://httpbin.org/get")
1.2、get请求的params 参数
import requests
r=requests.get('http://httpbin.org/get?name=germey&age=22')
#<==>等价于
data={'name':'germey','age':22}
r1=requests. get("http://httpbin.org/get", params=data)
print(r1.text)
1.3、post请求的data参数
response=requests.post(url,data=data,headers= Headers,timeout=30) #data为字典类型
def youdao(input):
import requests
from requests.exceptions import ConnectTimeout
import time
import random
url=r"http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"
Headers = { }
Headers["Cookie"]=r'OUTFOX_SEARCH_USER_ID_NCOO=1564612197.2237918; OUTFOX_SEARCH_USER_ID="1638006579@10.108.160.19"; _ga=GA1.2.269278628.1571982437; _ntes_nnid=db62add68d78e9de1c202b8b131b32a4,1579175684866; JSESSIONID=aaaGcKLB2j8UhdX6Q3V_w; SESSION_FROM_COOKIE=unknown; ___rl__test__cookies=1579203741289'
Headers["User-Agent"]=r"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36"
data = { } #post请求需要的data参数,在网页检查的Form Data中,
#data["i"]="I am jalen" #认真一点你会发现这就是我们输入的值,自己做一个简单的有道翻译只需要修改这里就可以实现
data["i"] = input #那就按照习惯在函数外单独输入经常变化的值
data["from"]="AUTO"
data["to"]="AUTO"
data["smartresult"]="dict"