嵩天python爬虫_我自己爬-python爬虫快速入门(一)

request库

对于轻量级用户,像我一样只是准备写一个搞笑用的程序,requests是很方便的存在。

安装通过pip就不说了

request的几个主要方法

requests.request() 构造一个请求,支撑以下各方法的基础方法

requests.get() 获取HTML网页的主要方法,对应于HTTP的GET

requests.head() 获取HTML网页头信息的方法,对应于HTTP的HEAD

requests.post() 向HTML网页提交POST请求的方法,对应于HTTP的POST

requests.put() 向HTML网页提交PUT请求的方法,对应于HTTP的PUT

requests.patch() 向HTML网页提交局部修改请求,对应于HTTP的PATCH

requests.delete() 向HTML页面提交删除请求,对应于HTTP的DELETE

这个基本上和http中报文的几种方法是一致的。

具体可以康康明解http的第三章。小钱钱够的同学可以支持一下正版。

get方法

我们主要使用的是get方法(因为只是爬别人)。

requests.get(url, params=None, **kwargs)中。url(统一资源定位符)指访问的资源的地址,就是你在浏览器上面那个栏栏里面输入的http://www.xxxxxx.com。kwargs用来控制访问的参数,也是用来控制你网络通信中的参数(可以理解为一个信封的上收信人和邮票这些)。

我们使用get方法

url="https://bing.com/"

res=requests.get(url)

我们去爬去的时候,通过url使用get方法,是获得一个request对象去访问网址资源(响应库名)。

而res是得到一个response对象,包含了几个属性

status_code HTTP请求的返回状态,200表示连接成功,404表示失败(详细见明解http第四章)

text HTTP响应内容的字符串形式,即url对应的页面内容

encoding 从HTTP header中猜测的响应内容编码方式

apparent_encoding 从内容中分析出的响应内容编码方式(备选编码方式)

content HTTP响应内容的二进制形式

通常如果我们发现res.txt的显示有些问题,我们会使用apparent_encoding去解码结果。

因为毕竟有可能有失败所以我们需要使用异常处理来打开。

url="https://bing.com/"

try:

res=requests.get(url)

res.raise_for_status()

res.encoding=res.apparent_encoding

print(res.text[:1000])

except:

print("spider failed")

几个小实例

基本的爬取

更改agent的方式

有些网站并不想让你爬所以会限制爬虫(因为你太老实了,危),像这样

就返回503了。

这个时候我们就可以动一下小手脚,我们把user-agent这个自报家门的东西换点(默认的参数自报是python爬虫),我们改成一个浏览器的名字‘Mozilla/5.0’,骗一骗它。

这样我们就绕开了这个小反爬。(仅供娱乐玩家使用,偶尔这么搞一搞)

访问资源的子部分

比如我们像用搜索引擎查一查某个东西。哪怎么搞呢?

我们去必应搜索了一波‘抗疫感想’,发现它长这个样子

那ok了,我们只需要把这串url里面的q=后面的换成我们想要的查就好。

还记得**args这个参数吗? 我们往里面加点料,开一个字典search={'q': 'xxx'},到时候它request的时候便会帮我们把参数p=xxx搞到url上去。

关于什么能爬什么不能爬

一般很多网站会把什么能爬什么不能爬写出来。搞一个robots协议公开给大家看。

我们只要在一个网站url后面加一个/robots.txt就能查看。User-agent: msnbot-media

Disallow: /

Allow: /th?

User-agent: Twitterbot

Disallow:

User-agent: *

Disallow: /account/

Disallow: /amp/

Allow: /api/maps/

取了一小部分,这里可以看到bing的/api/maps/是对所有爬虫都开放的(allow了),而对/account/这一部分是不允许别人爬的。而对于Twitterbot,不让爬。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值