当前位置:   article > 正文

Python爬虫:数据获取requests

Python爬虫:数据获取requests

1. 基本用法

1.1. 安装requests库

pip3 install requests

1.2. 发送HTTP请求

requests.request(method, url, **kwargs)

1.3. 发送GET请求

requests.get(url, params=None, **kwargs)

1.4. 发送POST请求

requests.post(url, data=None, json=None, **kwargs)

1.5. 发送PUT请求

requests.put(url, data=None, **kwargs)

1.6. 发送DELETE请求

requests.delete(url, **kwargs)

1.7. 发送HEAD请求

requests.head(url, **kwargs)

1.8. 创建一个会话对象

requests.session()

1.9. 获取重定向目标

requests.get_redirect_target(response)

1.10. 发送PATCH请求

requests.patch(url, data=None, **kwargs)

扫一扫欢迎关注,一起学习!

1.11. response返回

通过response对象的各种属性和方法来查看响应的各项信息

  1. .status_code:返回响应状态码,例如200表示请求成功,404表示请求的资源不存在等;
  2. .headers:返回响应头信息,是一个字典类型;
  3. .text:返回响应的内容,是一个字符串类型;
  4. .content:返回响应的二进制内容,是一个bytes类型;
  5. .cookies:返回响应的cookie信息,是一个字典类型;
  6. .json():返回响应的json格式数据,如果响应内容不是json格式,则会抛出异常;
  7. .encoding:返回响应内容的编码格式;
  8. .url:返回响应的URL地址;
  9. .history:返回请求历史,是一个列表类型,其中每个元素都是一个response对象。

2. GET与POST请求方式

GET和POST是HTTP协议中最常用的两种请求方法,它们在参数传递、安全性、缓存以及URL长度上有所区别。具体分析如下:

  1. 参数传递:GET请求将参数包含在URL中,而POST请求通过request body传递参数。这意味着GET请求的参数会直接显示在浏览器的地址栏中,而POST请求的参数不会显示。
  2. 安全性:POST请求通常被认为比GET请求更安全,因为POST请求的数据不会像GET请求那样显示在URL中,从而减少了敏感信息泄露的风险。
  3. 缓存:GET请求的结果可以被浏览器缓存,这使得重复访问同一资源时可以更快地加载页面。而POST请求通常不会被缓存,因为每次提交的数据可能不同,缓存可能会导致数据不一致。
  4. URL长度:由于GET请求的参数是附加在URL上的,所以URL的长度受到限制。如果参数过多或过长,可能会导致服务器拒绝处理请求。POST请求则没有这个问题,因为参数是在请求体中发送的。

总的来说,GET请求适合用于获取数据,而POST请求适合用于提交数据。在实际开发中,选择使用哪种请求方法取决于具体的需求和场景。

2.1. GET

  1. import requests
  2. url = 'https://www.baidu.com/s'
  3. headers = {
  4. 'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
  5. }
  6. # 方式1
  7. rep = requests.get('https://www.baidu.com/s?ie=UTF-8&wd=中国', headers=headers)
  8. # 方式2
  9. params = {
  10. 'ie' : 'UTF-8',
  11. 'wd' : '中国'
  12. }
  13. rep = requests.get(url,params=params ,headers=headers)
  14. print(rep.text)

2.2. POST

  1. import requests
  2. url = 'https://fanyi.qq.com/api/translate'
  3. data = {
  4. 'source': 'auto',
  5. 'target': 'en',
  6. 'sourceText': '中国'
  7. }
  8. headers = {
  9. 'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
  10. }
  11. rep = requests.post(url, data=data, headers=headers)
  12. print(rep.text)

  1. import requests
  2. url = 'https://fanyi.qq.com/api/translate'
  3. data = {
  4. 'source': 'auto',
  5. 'target': 'en',
  6. 'sourceText': '中国'
  7. }
  8. headers = {
  9. 'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
  10. }
  11. rep = requests.post(url, data=data, headers=headers)
  12. print(rep.text)

  1. {
  2. "translate": {
  3. "errCode": 0,
  4. "errMsg": "",
  5. "source": "zh",
  6. "target": "en",
  7. "records": [
  8. {
  9. "sourceText": "中国",
  10. "targetText": "China"
  11. }
  12. ],
  13. "full": true,
  14. "options": {}
  15. },
  16. "dict": null,
  17. "suggest": null,
  18. "errCode": 0,
  19. "errMsg": "ok"
  20. }

2.3. 小结

  1. get请求中带的参数为params,post使用的参数为data。

  1. 运行后返回为空,一般被限制了User-Agent。

3. 请求头headers

Headers在HTTP请求中扮演着重要的角色,它们为服务器提供额外的信息,帮助服务器正确处理请求。例如,通过设置User-Agent可以模拟浏览器行为,避免被网站识别为爬虫并封锁。

  1. User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36
  2. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
  3. Accept-Encoding: gzip, deflate, br
  4. Accept-Language: en-US,en;q=0.9
  5. Connection: keep-alive
  6. Cookie: PHPSESSID=d1s5jnrl3kjhg5iuj65t54rd5

以下是一些常见的HTTP请求头字段及其含义:

3.1. User-Agent

表明发送请求的用户代理(通常是浏览器)的信息。服务器通过这个字段来识别客户端使用的操作系统、浏览器类型和版本等。

3.2. Accept

告诉服务器客户端能够接受哪些类型的媒体,这样服务器可以根据客户端的偏好返回相应的内容。例如,Accept: text/html 表示客户端希望接收HTML格式的响应。

3.3. Content-Type

当客户端需要发送数据给服务器时,这个字段指定数据的MIME类型。例如,Content-Type: application/json 表示客户端发送的是JSON格式的数据。

3.4. Accept-Encoding

表示客户端能够解码哪些编码方式的数据。这通常用于指定客户端是否支持压缩编码,如Accept-Encoding: gzip。

3.5. Cookie

用于存储会话信息或其他持久性数据。服务器可以通过设置Cookie来维护客户端的状态。

3.6. Authorization

用于提供认证信息,如Bearer tokens或HTTP基本认证的用户名和密码。

3.7. Connection

控制是否关闭网络连接,或者是否使用持久连接。例如,Connection: keep-alive 表示使用持久连接。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/53205
推荐阅读
相关标签
  

闽ICP备14008679号