加入Datawhale开始学习共计一周的python爬虫,争取高质高效完成任务。
学习get与post请求
通过requests实现
简单操作
使用Requests来实现请求的操作很简单,下面先分别贴出两个函数的参数含义(直接使用python的help函数即可):
两个函数的用法也很清晰明了了。具体使用代码如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15import requests
# get请求
url = 'http://www.baidu.com'
response = requests.get(url)
print(response.text)
# post请求
# 发送post请求时添加一个data参数,可以用字典构造
data = {
"name":"desmon",
"school":'sysu'
}
response = requests.post("http://www.baidu.com",data=data)
print(response.text)
运行结果分别如下:
额外知识
另外,注意到post函数的参数还可以用json数据类型,下面简单使用一下json。参考博客:https://www.cnblogs.com/Rita-LJ/p/8759452.html
json模块提供了一种简单的方式来编码和解码JSON数据,其主要函数是json.dumps()和json.loads()。示例代码如下:1
2
3
4
5
6
7
8
9
10
11# 将python数据结构转换成JSON
import json
data = {
'name':'desmon',
'school':'sysu'
}
json_str = json.dumps(data)
# 将JSON编码的字符串转换成python数据结构
data = json.loads(json_str)
通过urllib实现
使用urllib包进行操作也很简单。1
2
3
4
5
6
7
8
9
10
11
12
13import urllib.request
# get请求
f = urllib.request.urlopen('https://www.baidu.com')
firstline = f.readline() # 读取html页面的第一行
print(firstline)
# post请求
req = urllib.request.Request(url='https://www.baidu.com',
data=b'The first day of Web Crawler')
req_data = urllib.request.urlopen(req)
req = req_data.read()
print(req)
运行结果如下:
断开网络后发出申请
这里仅以requests库提供的post和get为例,运行结果如下:
可以看到均出现了ConnectionError,即连接错误。
请求头
请求头的作用,通俗来讲,就是能够告诉被请求的服务器需要传送什么样的格式的信息。由于时间关系,这里就贴一下从百度百科看来的一些我认为比较重要的请求头类型:
Accept:浏览器可接受的MIME类型。
Accept-Charset:浏览器可接受的字符集。
Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。
Authorization:授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中。
Connection:表示是否需要持久连接。
Content-Length:表示请求消息正文的长度。
Cookie:这是最重要的请求头信息之一。
User-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用。
… 等等等
如何添加请求头?
在爬虫的时候,如果不添加请求头,可能网站会阻止一个用户的登陆,此时我们就需要添加请求头来进行模拟伪装,使用python添加请求头方法如下。(参考博客:https://www.jianshu.com/p/89ab535989a9)
1 | import requests |
运行结果如下:
感想
时间很短,所以也没有深入了解的时间,这样其实也只是懂个皮毛。希望等自己忙过这一阵,可以真正的开始爬虫学习。