使用requests模块进行初步爬虫

Posted bug-king

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用requests模块进行初步爬虫相关的知识,希望对你有一定的参考价值。

requests模块

1、get请求:

(1)使用步骤:

#1、导包:

    import requests

#2、发送请求,获取响应

    response = requests.get(url)

#3、获取响应内容

    response.text

(2)get请求详细参数

    requests.get(

    url=请求的url,

    headers=请求头【字典】,

    params=请求参数字典     >>所有请求参数一个不能少

    )---->【response对象】

(3)response对象的属性

a、获取响应正文

    获取响应正文的字符串格式数据:response.text

    获取响应正文的二进制格式数据:response.content

b、编码:response.encoding:

    之所以能够通过response.text获取响应内容的字符串,requests底层其实就是使用的response.encoding来将正文的二进制类型变成字符串的(编码方式可能与实际不符导致response.text获取乱码,可将下文的response.encoding换成合适的解码方式)。

    response.content.decode(response.encoding)

c、其他:

    response.status_code:状态码

    response.headers:响应头

d、乱码问题的解决办法:

产生的原因就是编解码不一致。

(1)response.content.decode(‘页面对应的编码格式‘)

(2)response.encoding=‘页面正确的编码‘

response.text就能获取正确的页面内容了。

2、post请求

    requests.post(

    url=请求的url,

    headers = 请求头,

    data=请求数据,       >> 如果请求参数既存在get(Query String Parameters)类型也存在post(Form Datas)类型,那么将get参数直接放入地址栏中,此处只接受post参数

    )--->response对象

    如果response的内容是json数据,可以通过reponse.json()直接获取json数据,返回的是一个字典或者list

 

找ajax接口的的数据,最重要的就是分析请求参数,如果不能获取数据,那就是请求参数有误,只要找到正确的请求参数获取方法,就可以解决这样的问题。

确定是哪些请求参数在影响数据的获取,判断办法就是比对,比对两条ajax请求他们参数哪些发生了变化,变化的参数就是你要解决的核心。

 

找参数的办法有两种:

1第一种就是查看这条ajax接口之前有没有发送过一些ajax接口,如果有,可能这些接口的其中一个的响应内容里面包含这个接口的数据。

 

2、有可能这个请求参数写死到页面中的。--一般这种情况出现在滚动加载的第一版数据的获取有可能这么做。

 

3、在js文件中去寻找参数。

以上是关于使用requests模块进行初步爬虫的主要内容,如果未能解决你的问题,请参考以下文章

你还不会Python网络爬虫中的requests模块使用?《二》

你还不会Python网络爬虫中的requests模块使用?《二》

Python爬虫之使用Fiddler+Postman+Python的requests模块爬取各国国旗

requests模块高级操作

爬虫基础

爬虫学习 04.Python网络爬虫之requests模块