热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

#Python学习笔记——爬虫的自我养成(一)

一、爬虫需要的包为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')

 

 


推荐阅读
author-avatar
夏晶阳--艺术
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有