Python爬爬虫--urllib处理GET/POST请求

1、常用两种HTTP请求方法

 在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。
  1. GET - 从指定的资源请求数据。
  2. POST - 向指定的资源提交要被处理的数据。

  • GET方法
    • GET 请求可被缓存
    • GET 请求保留在浏览器历史记录中
    • GET 请求可被收藏为书签
    • GET 请求不应在处理敏感数据时使用
    • GET 请求有长度限制
    • GET 请求只应当用于取回数据

  • POST 方法
    • POST 请求不会被缓存
    • POST 请求不会保留在浏览器历史记录中
    • POST 不能被收藏为书签
    • POST 请求对数据长度没有要求

2、GET 和 POST对比

对比表格
  • 值得注意的是:
    1、Get 是用来从服务器上获得数据,Post 是用来向服务器上传递数据。
    2、Get 将表单中数据的按照 variable=value 的形式,添加到 action 所指向的 URL 后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post 是将表单中的数据放在 form 的数据体中,按照变量和值相对应的方式,传递到 action* 所指向 URL

3、实例操作:

from fake_useragent import UserAgent
from urllib.parse import quote, urlencode
from urllib.request import Request, urlopen


def test_get(url):
    search_word = input("请输入要搜索的内容:")
    # quote: 自动拼接,拼接单个参数
    f_url = url.format(quote(search_word))
    # (1)
    # print(f_url)
    headers = {'User-Agent': UserAgent().random}
    # 获取请求
    req = Request(f_url, headers=headers)
    # 获取响应
    resp = urlopen(req)
    # (2)
    print(resp.read().decode())


if __name__ == '__main__':
    url1 = "https://www.baidu.com/s?ie=utf-8&wd={}"
    test_get(url1)

(1)

(2)

(2-1)



  .方式二:

from fake_useragent import UserAgent
from urllib.parse import quote, urlencode
from urllib.request import Request, urlopen


def test_get(url):
    search_word = input("请输入要搜索的内容:")
    params = {
        'ie': "utf-8",
        'wd': search_word
    }
    # quote: 自动拼接,拼接单个参数
    # f_url1 = url.format(quote(search_word))
    # urlencode: 自动拼接,拼接多个参数
    f_url1 = url.format(urlencode(params))
    # (1)
    # print(f_url)
    headers = {'User-Agent': UserAgent().random}
    # 获取请求
    req = Request(f_url1, headers=headers)
    # 获取响应
    resp = urlopen(req)
    # (2)
    print(resp.read().decode())


if __name__ == '__main__':
    url1 = "https://www.baidu.com/s?ie=utf-8&wd={}"
    url2 = "https://www.baidu.com/s?&{}"
    # test_get(url1)
    test_get(url2)

6.POST代码演示:

# -*- coding:utf-8 -*-
from urllib.request import Request, urlopen
from urllib.parse import urlencode
from fake_useragent import UserAgent


def download(url):
    headers = {
        "User-Agent": UserAgent().random,
    }
    datas = {
        "searchword": "人才"
    }
    f_data = urlencode(datas)
    req = Request(url, headers=headers, data=f_data.encode())
    resp = urlopen(req)
    print(resp.read().decode())


if __name__ == '__main__':
    url = "https://www.21wecan.com/rcwjs/searchlist.jsp"
    download(url)
6-5

6-6

  6.结论:观察6-5和6-6的图发现目的是成功了,但是没有匹配到页面检查结果的数据原因在于:检查结果数据在iframe内,需要使用selenium跳进iframe作用域里去匹配相对应的元素。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容