使用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模块使用?《二》