Python爬虫笔记

python爬虫day-11(requests库基本用法)

2019-04-15  本文已影响0人  南音木

个人学习笔记,方便自己查阅,仅供参考,欢迎交流

requests库

1.基本用法

1.GET请求

HTTP中最常见的请求之一就是GET请求。

import requests

r = requests.get('https://www.baidu.com/')
print(type(r))
print(r.status_code)
print(type(r.text))
print(r.text)
print(r.cookies)

代码二:

import requests

r = requests.get('https://httpbin.org/get')
print(r.text)

运行结果:
{
"args": {},
"headers": {
"Accept": "
/",
"Accept-Encoding": "gzip, deflate",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.18.4"
},
"origin": "182.150.44.67, 182.150.44.67",
"url": "https://httpbin.org/get"
}

代码三:
对于 GET 请求,附加额外的信息。

import requests

data ={
       'name':'germey',
       'age':22
       }
r = requests.get("http://httpbin.org/get",params=data)
print(r.text)
import requests

r = requests.get('http://httpbin.org/get?name=germery&age=22')
print(r.text)

运行结果:
{
"args": {
"age": "22",
"name": "germey"
},
"headers": {
"Accept": "
/",
"Accept-Encoding": "gzip, deflate",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.18.4"
},
"origin": "182.150.44.67, 182.150.44.67",
"url": "https://httpbin.org/get?name=germey&age=22"
}

代码四:

import requests

r = requests.get("http://httpbin.org/get")
print(type(r.text))
print(r.json())
print(type(r.json()))

运行结果:
<class 'str'>{'args': {}, 'headers': {'Accept': '
/', 'Accept-Encoding': 'gzip, deflate', 'Host': 'httpbin.org', 'User-Agent': 'python-requests/2.18.4'}, 'origin': '101.204.247.19, 101.204.247.19', 'url': 'https://httpbin.org/get'}
<class 'dict'>

调用 json()方法,就可以将返回结果是JSON格式的字符串转化为字典。

import requests
import re

headers ={
        'User-Agent':'Mozilla/5.0(Macintosh;Intel Mac OS X 10_11_4) \
        AppleWebkit/537.36(KHMTL,like Gecko) Chrome/52.0/2743.116 Safari/537.36'
        }
r = requests.get("https://www.zhihu.com/explore",headers =headers)
pattern = re.compile('explore-feed.*?question_link.*?>(.*?)</a>',re.S)
titles = re.findall(pattern,r.text)
print(titles)

运行结果:
['\n如何煮一道简单美味的汤?\n', '\n为什么信长与其长子死于本能寺后,他手下那些军团长很快就摆脱了织田家独立出来了呢?用的是怎样的手段呢?\n', '\n当你踏入教师领域时有什么惊人的发现?\n', '\n如何评价歌手2019总决赛吴青峰的《歌颂者》?\n', '\n为什么要远离精神病患者?\n', '\n喜欢一个抑郁症女生怎么办?\n', '\n我17岁,如果要报强奸案,可以不让监护人知晓吗?\n', '\n雅诗兰黛哪里买最划算?\n', '\n喜欢写代码的程序员上班能有多快乐?\n', '\n游戏对战平台经历了怎样的演变,为什么逐渐消亡了?\n']

加入了headers 信息,其中包含了User- Agent 字段信息,也就是浏览器标识信息。如果不加这个,知乎会禁止抓取。(使用了正则表达式,看不懂,后面要学到。)

import requests

r =requests.get("https://www.jianshu.com/favicon.ico")
with open ('favicon.ico','wb') as f:
    f.write(r.content)

这里用了open()方法,它的第一个参数是文件名称,第二个参数代表以二进制写的形式打开,可以向文件里写入二进制数据。

import requests

r = requests.get("https://www.zhihu.com/explore")
print(r.text)

运行结果:
<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
< hr ><center>openresty</center>
</body>
</html>

import requests

headers ={
        'User-Agent':'Mozilla/5.0(Macintosh;Intel Mac OS X 10_11_4) \
        AppleWebkit/537.36(KHMTL,like Gecko) Chrome/52.0/2743.116 Safari/537.36'
        }
r = requests.get("https://www.zhihu.com/explore",headers =headers)
print(r.text)
2.POST请求
import requests

data = {'name':'germey','age':'22'}
r = requests.post("http://httpbin.org/post",data =data)
print(r.text)
3.响应

发送请求后,得到的就是响应。在上面的实例中,使用 text和content 获取了 应的内容。此外,还有很多属性和方法可以用来获取其他信息,比如状态码、响应头、Cookies 等。

import requests

r= requests.get("http://www.jianshu.com")
print(type(r.status_code),r.status_code)
print(type(r.headers),r.headers)
print(type(r.cookies),r.cookies)
print(type(r.url),r.url)
print(type(r.history),r.history)
上一篇 下一篇

猜你喜欢

热点阅读