作者:夏晶阳--艺术 | 来源:互联网 | 2023-09-24 23:44
一、爬虫需要的包为urllib首先介绍urllib.request模块urllib.request.urlopen(网站的地址)-打开一个网站,将网站的响应返
一、
爬虫需要的包为urllib
首先介绍urllib.request模块
urllib.request.urlopen('网站的地址') -> 打开一个网站,将网站的响应返回一个对象(可以类比打开一个文件返回一个文件对象)
urllib.request.read() -> 将网站对象转换成二进制数据,如果想将其打印必须解码:decode('utf-8')
例1:
由以上两个方法我们可以爬去网上一个图片,以http://placekitten.com/250/400为例:
import urllib.request as ur
respon = ur.urlopen('http://placekitten.com/250/400')#返回一个网站对象
res = respon.read()#将网站对象转化成二进制数据
with open('第一个爬虫.jpg', 'wb') as f:#以二进制方式打开一张空白图片
f.write(res)#将网站对象的二进制数据写入图片,写入的数据和文件的打开方式一定要对应
例2:
from urllib import requestwith request.urlopen('https://api.douban.com/v2/book/2129650') as f:data = f.read()print('Status:', f.status, f.reason)for k, v in f.getheaders():print('%s: %s' % (k, v))print('Data:', data.decode('utf-8'))
getheaders方法应该是返回一个数组,包含有服务器响应一个 HTTP 请求所发送的标头。
data的数据可以用“utf-8”解码
Status: 200 OK
Server: nginx
Date: Tue, 26 May 2015 10:02:27 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 2049
Connection: close
Expires: Sun, 1 Jan 2006 01:00:00 GMT
Pragma: no-cache
Cache-Control: must-revalidate, no-cache, private
X-DAE-Node: pidl1
Data: {"rating":{"max":10,"numRaters":16,"average":"7.4","min":0},"subtitle":"","author":["廖雪峰编著"],"pubdate":"2007-6",...}
二、
爬取有道词典进行翻译的流程。
1、查看网页源代码
2、在network中找到method,寻找客户端提交的请求
3、在请求中找到地址url
4、在请求中找到接口from data,其下内容便是客户端传给服务器的指定数据
5、data必须是指定要发送到服务器的其他数据的对象
6、data遵循一定的格式和编码传输协议(有待进一步考证utf-8的进一步含义)
7、利用字典封装需要传入的数据,利用方法urllib.parse.urlencod().encode('utf-8
)将其转化成能被传入服务器的格式和传输方式。utf-8将数据以bytes的形式传入
8、将指定数据传入服务器之后服务器会返回相应数据,这些数据的返回形式是'utf-8',因而在读取的过程中需要解码。即用urllib.request.read().decode('utf-8')