Python爬虫之Requests 库的介绍和操作实例

Python爬虫之Requests 库的介绍和操作实例一、什么是爬虫?网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息

欢迎大家来到IT世界,在知识的湖畔探索吧!

一、什么是爬虫

网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。

其实通俗的讲就是通过程序获取web页面上自己想要的数据,也就是自动抓取数据。

你可以爬去妹子的图片,爬取自己想看看的视频。。等等你想要爬取的数据,只要你能通过浏览器访问的数据都可以通过爬虫获取

二、爬虫的本质

模拟浏览器打开网页,获取网页中我们想要的那部分数据

浏览器打开网页的过程:
当你在浏览器中输入地址后,经过DNS服务器找到服务器主机,向服务器发送一个请求,服务器经过解析后发送给用户浏览器结果,包括html,js,css等文件内容,浏览器解析出来最后呈现给用户在浏览器上看到的结果

所以用户看到的浏览器的结果就是由HTML代码构成的,我们爬虫就是为了获取这些内容,通过分析和过滤html代码,从中获取我们想要资源(文本,图片,视频…)

三、爬虫的基本流程

发起请求
通过HTTP库向目标站点发起请求,也就是发送一个Request,请求可以包含额外的header等信息,等待服务器响应

获取响应内容
如果服务器能正常响应,会得到一个Response,Response的内容便是所要获取的页面内容,类型可能是HTML,Json字符串,二进制数据(图片或者视频)等类型

解析内容
得到的内容可能是HTML,可以用正则表达式,页面解析库进行解析,可能是Json,可以直接转换为Json对象解析,可能是二进制数据,可以做保存或者进一步的处理

保存数据
保存形式多样,可以存为文本,也可以保存到数据库,或者保存特定格式的文件

四、什么是Requests

Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库
如果你看过上篇文章关于urllib库的使用,你会发现,其实urllib还是非常不方便的,而Requests它会比urllib更加方便,可以节约我们大量的工作。(用了requests之后,你基本都不愿意用urllib了)一句话,requests是python实现的最简单易用的HTTP库,建议爬虫使用requests库。

默认安装好python之后,是没有安装requests模块的,需要单独通过pip安装

五、Requests 库的基础知识

Python爬虫之Requests 库的介绍和操作实例

Requests 库的7个主要方法

我们通过调用Request库中的方法,得到返回的对象。其中包括两个对象,request对象和response对象。

request对象就是我们要请求的url,response对象是返回的内容,如图:

Python爬虫之Requests 库的介绍和操作实例

Request库的两个重要对像

六、Requests的安装

1.强烈建议大家使用pip进行安装:pip insrall requests

2.Pycharm安装:file-》default settings-》project interpreter-》搜索requests-》install package-》ok

七、Requests库实的操作例

1、京东商品的爬取–普通爬取框架

import requests

url = “https://item.jd.com/2967929.html”

try:

r = requests.get(url)

r.raise_for_status()

r.encoding = r.apparent_encoding

print(r.text[:1000])

except:

print(“爬取失败!”)

2、亚马逊商品的爬取–通过修改headers字段,模拟浏览器向网站发起请求

import requests

url=”https://www.amazon.cn/gp/product/B01M8L5Z3Y”

try:

kv = {‘user-agent’:’Mozilla/5.0′}

r=requests.get(url,headers=kv)

r.raise_for_status()

r.encoding=r.apparent_encoding

print(r.status_code)

print(r.text[:1000])

except:

print(“爬取失败”)

3、百度/360搜索关键词提交–修改params参数提交关键词

百度的关键词接口:http://www.baidu.com/s?wd=keyword

360的关键词接口:http://www.so.com/s?q=keyword

import requests

url=”http://www.baidu.com/s”

try:

kv={‘wd’:’Python’}

r=requests.get(url,params=kv)

print(r.request.url)

r.raise_for_status()

print(len(r.text))

print(r.text[500:5000])

except:

print(“爬取失败”)

4、网络图片的爬取和存储–结合os库和文件操作的使用

import requests

import os

url=”http://tc.sinaimg.cn/maxwidth.800/tc.service.weibo.com/p3_pstatp_com/6da229b421faf86ca9ba406190b6f06e.jpg”

root=”D://pics//”

path=root + url.split(‘/’)[-1]

try:

if not os.path.exists(root):

os.mkdir(root)

if not os.path.exists(path):

r = requests.get(url)

with open(path, ‘wb’) as f:

f.write(r.content)

f.close()

print(“文件保存成功”)

else:

print(“文件已存在”)

except:

print(“爬取失败”)

最后:异常处理

在你不确定会发生什么错误时,尽量使用try…except来捕获异常所有的requests exception:

import requests

from requests.exceptions import ReadTimeout,HTTPError,RequestException

try:

response = requests.get(‘http://www.baidu.com’,timeout=0.5)

print(response.status_code)

except ReadTimeout:

print(‘timeout’)

except HTTPError:

print(‘httperror’)

except RequestException:

print(‘reqerror’)

最后,小编想说:我是一名python开发工程师,
整理了一套最新的python系统学习教程,
想要这些资料的可以关注私信小编“01”即可(免费分享哦)希望能对你有所帮助

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/22364.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信