初始爬虫
1.post请求百度翻译
操作如下:
import urllib.request
url='http://fanyi.baidu.com/sug'
header={
'ua代理':'ua代理'
}
data={
'kw':'spider'
}
#post请求的参数必须编码
data=urllib.parse.urlencode(data).encode('utf-8')
#post请求的参数是不会拼接在url后面的,而是需要放在请求对象的定制的参数中
#post请求的参数必须要进行编码
request=urllib.request.Request(url=url,data=data,headers=headers)
#模拟浏览器向服务器发送请求
response=urllib.request.urlopen(request)
#获取响应的数据
content=response.read().decode('utf-8')
print(content)
用type方法可以发现打印出来的content是str类型,实际上content是json类型,因此必须通过json方法来将content翻译为可以读懂的类型,因此还要加上下面的内容
import json
obj=json.load(content)
print(obj)
#以百度翻译的spider英文单词为例,输出结果是所有的翻译结果。
2.ajex的get请求——豆瓣电影第一页
import urllib.request
url='Request URL-http://www.网址.com/'
headers={
'请求头':'请求头'
}
#请求对象的定制
request=urllib.request.Request(url=url,headers=headers)
#获取相应的数据
response=urllib.request.urlopen(request)
content=response.read().decode('utf-8')
#数据下载到本地
#open方法在默认情况下使用的是gbk的编码,由于数据里有汉字,想要保存该数据,那么必须在open方法里指定utf-8编码
fp=open('douban.json','w',encoding='utf-8')
fp.write(content)
#当然上边两行代码可以简写成下面两行:
with open('douban.json','w',encoding='utf-8') as fp:
fp.write(content)
3.知识点穿插:
(1)来说明一下什么是请求头
在上边所学的内容中ua代理就是请求头,但是你学到后面可以发现,能作为请求头的不止有ua代理,并且有时候ua代理不能作为请求头,请求头就像一张身份证,上边描述着姓名,性别,国籍等一系列你自己独一无二的信息(对于ua代理等就是描述着自己电脑的操作系统,CPU,gpu,ip地址等信息的身份证)
(2)decode解码,encode编码
(3)
点击鼠标右键——inspect——netwo——headers——Request URL 这里的Request URL是接口,并不是单纯的网址,你之前所有代码中url变量就是Request URL对应的接口
点击鼠标右键——inspect——netwo——headers——Request Method:GET 这里的Request Method指的是请求方式,请求方式是get就用get请求urlencode,请求方式是post就用post请求urlencode
点击鼠标右键——inspect——netwo——headers——X-Requested-With:XMLHttpRequest 这里当X-Requested-With对应的数据为XMLHttpRequest时则用ajax请求