爬虫知识4:Requests模块介绍

爬虫需要掌握的一些知识图谱:

    如果不使用爬虫框架scrapy,也利用一些爬虫模块也可以自定义爬虫的过程,比如 Python标准库中提供的urllib、urllib2、httplib,但是这些模块已经有些过时了,而Requests是使用Apache2 Licensed许可证的,其在Python内置模块的基础上进行了高度的封装,从而使得Pythoner进行网络请求时,变得美好了许多。

1、requests模块的一些基本参数:

    可以看下Requests模块的源码,主要包含get、post、put、delete、head、options参数,参数部分的源码如下:

  • get:

  • options

  • head

  • post

  • put

  • patch

  • delete

    实现爬虫时,有两种方式,一种是直接拿公开的信息,一种是需要登录才能拿到的信息。

案例1:发送最简单的get请求,获取页面信息

案例2:拼接构建url后,使用request发送get请求。

url的拼接:

如果需要在搜索框中输入关键词进行搜索,可以使用"query=关键词"进行拼接,类似于在百度搜索框中直接写关键词。

比如以下网址会被拼接为:https://www.sogou.com/web?query=楼市政策&q=b。

同时下案例也是以request的方式发送get请求

案例3:发送post请求

右击--检查--network就可以看到post的请求

案例3-1:使用post直接发送请求

import requests
form_data ={
    'phone':'861。。。',
    'password':'123456',
    'oneMonth':'1',
}
r=requests.post(
    url='http://dig.chouti.com/login',
    data=form_data
)
print(r.text)

执行结果:

会出来验证的信息,要么用户名和密码错误,要么登录成功,如果ip被封就会显示其他的信息

案例3-2:data参数,发送post请求

import requests
response=requests.request(
    method='POST',
    url='http://www.sogou.com/web',
    params={'query':'房价','q':'b'},#"query=fangjia&q=b"
    # 以data发送数据,则请求头会是content-type:application/x-www-form-urlencoded
   data={'user':'hh','pwd':'sdh'},#"user=hh; pwd=sdh"
)

案例3-3:json参数的应用

import requests
import json
response=requests.request(
    method='POST',
    url='http://www.sogou.com/web',
    params={'query':'房价','q':'b'},#"query=fangjia&q=b"
    # 以json发送数据,则请求头会是content-type:application/json
    json = json.dumps({'user': 'hh', 'pwd': 'sdh'}) 
)

案例4:设置head头,添加user-agent

案例4-1:出现500 Server Error问题,一种可能性是需要在head头中添加user_agent

import requests
response=requests.get(url='https://www.zhihu.com')
print(response.text)#输出标题

效果:

案例4-2:解决500 Server Error问题,添加header头信息,可以右键----检查----网络,找到对应的Referer、User-Agent,信息复制进header中即可。

import requests
response=requests.get(url='https://www.zhihu.com/',
                      headers={'Referer':'https://www.zhihu.com',
                               'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36'
                               }
                      )
print(response.text)#输出标题

即可打印一些内容。

案例4-3:动态设置user-agent

案例5:自动登录相关,设置cookies

5-1:自动登录,cookies主要是存储登录密码之类的信息的,可以解决登录问题。

需要在右键----检查----网络,找到Cookie,比如github上的信息以字典形式写入。

程序代码如下:

案例6:自动校验ip的有效性,关于创建免费的ip池,可以参考其他的博文

关于获取ip,并建立自己的ip池,请参考反爬虫的博文。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值