本文共 4493 字,大约阅读时间需要 14 分钟。
学习Python爬虫过程中的心得体会以及知识点的整理,方便我自己查找,也希望可以和大家一起交流。
可以直接使用pip安装,如果电脑上没安装pip,可以到以下网址教程中安装。
Linux:。 Windows:。 MAC OS:直接在终端输入代码:sudo easy_install pip
。 安装好pip后,我们就可以安装requests库了。
直接输入代码:pip install requests
。 我们首先在Python中导入requests库:
import requests
对于新手来说,我们需要知道requests库有什么功能方法,我们可以dir一下:
print (dir(requests))在这里我们可以看到requests库的各种方法。 接下来我们就使用几种。
import requestsurl="http://www.baidu.com"r=requests.get(url)
这里使用的是requests库的get方法,相当于我们在浏览器里输入“http://www.baidu.com”这个网址所能获得的的信息。
requests库支持代理,支持两种协议,http和https。
proxies = { "http":"http://127.0.0.1:8080", "https":"http://127.0.0.1:8080" , }
我是直接在本地的8080端口进行测试,并且可以利用burpsuite在8080端口进行监听。
若需要输入账户密码,则可以:proxies = { "http": "http://user:pass@10.10.1.10:3128/",}
当进行代理的时候,需要修改原本的代码:
import requestsurl="http://www.baidu.com"proxies = { "http":"http://127.0.0.1:8080", "https":"http://127.0.0.1:8080" , }r=requests.get(url,proxies = proxies,verify = false)
这里我们在get方法中添加了参数,proxies参数和verify参数,如果使用的是https认证而本地证书又没有认证,那么需要将verify参数设置为false。当然,如果不进行修改verify,那么代码指令依然可以运行,但是会报错。
import requestsurl="http://www.baidu.com"r=requests.get(url)print(r)print(r.status_code)print(r.text)print(r.content)print(r.history)print(r.request.headers)print(r.headers)print(r.request.body)
r=requests.get(url,allow_redirects=False)
allow_redirects参数是询问是否自动跳转。
4. sys.setdefaultencoding:由于linux和windows的基础设置有一些不同,所以有时候需要更改一些设置,比如编码,是为了防止乱码。这个过程需要引入sys,更改系统设置。完整代码如下:import sysreload(sys)sys.setdefaultencoding('utf-8')
r.encoding = "utf-8"
headers = { 'user-agent': 'my-aasdasdaspp/0.0.1', 'asd':'hello world!'}
cookies = dict(cookies_are='working')
r = requests.get(url, timeout=5)r = requests.get(url, timeout=None)
conn = requests.session()r = conn.get(url)print r.request.headersr = conn.get(url)print r.request.headers
import requestsimport json r = requests.get("http://www.baidu.com/get")print(type(r.text))print(r.json())print(json.loads(r.text))print(type(r.json()))
files = { 'file': open('cookie.txt', 'rb')}response = requests.post("http://httpbin.org/post", files=files)
url="http://www.baidu.com" r=requests.get(url)
payload = { 'name': 'loop', 'age': '12'} r = requests.post("http://httpbin.org/post", data=payload)
import requestsurl = 'https://account.tophant.com/login.html?response_type=code&client_id=b611bfe4ef417dbc&state=2e509c092de6ba1bf39a6fff76dd9a76'#requests的请求方法:get、post、put、delete、head、options等r = requests.get(url)r = requests.post(url,data=xxx)r = requests.put(url)r = requests.delete(url)r = requests.head(url)r = requests.options(url)#代理认证:proxies = { "http": "http://127.0.0.1:8080", "https": "http://127.0.0.1:8080",}proxies = { "http": "http://user:pass@10.10.1.10:3128/",}#查看响应码print r.status_code#重定向r = requests.get(url, allow_redirects=False)print r.history#查看相应内容print r.textprint r.content#修改系统默认编码格式import sysreload(sys)sys.setdefaultencoding('utf-8')#查看请求头print r.request.headers#查看请求参数print r.request.body#查看响应头print r.headers#保存返回的结果fh = open("abc.png", 'w')fh.write(r.content)fh.close()#查看返回的编码格式print r.encoding#更改返回的编码格式r.encoding = "utf-8"#添加header头headers = { 'user-agent': 'my-aasdasdaspp/0.0.1', 'asd':'hello world!'}#修改cookiecookies = dict(cookies_are='working')#获得响应头中的cookieprint r.cookies['domain']#如何发送post请求payload = { 'name': 'loop', 'age': '12'}r = requests.post("http://httpbin.org/post", data=payload)#设置超时r = requests.get(url, timeout=5)r = requests.get(url, timeout=None)#使用sessionconn = requests.session()r = conn.get(url)print r.request.headersr = conn.get(url)print r.request.headers#请求方法r = requests.post(url, proxies=proxies, headers=headers, cookies=cookies, verify=False, data=payload)
转载地址:http://hfazi.baihongyu.com/