Python爬虫|urllib和requests爬虫库POST请

2020-09-01  本文已影响0人  ShowMeCoding

网络爬虫的本质:通过程序模拟浏览器请求进行批量化网页信息获取

1 网页调试工具

单击右键,进入网页检查工具-->network-->清除已经加载的数据-->在输入框输入单词-->在监控处看到sug文件

image.png
image.png
在输入框输入字母的时候慢一点,每次都会出现一个sug文件,从中可以总结出相关规律:

2 使用urllib的post请求

rom urllib import request,parse
import json
import ssl

#若报错:unable to get local issuer certificate
#(⽆法获取本地颁发者证书)错误,请使⽤下⾯代码
#全局取消证书验证
ssl._create_default_https_context = ssl._create_unverified_context

def BaiduFanyi(keyword):
    # 请求的url
    url = 'https://fanyi.baidu.com/sug'

    # post 发送的数据
    data = {
        'kw': keyword
    }
    data = parse.urlencode(data)

    # 发送请求,抓取信息
    req = request.Request(url=url, data=bytes(data,encoding='utf-8'))
    res = request.urlopen(req)

    if res.status == 200:
        # 获取结果
        json_data = json.loads(res.read().decode('utf-8'))
        print(json_data['data'][0]['v'])
    else:
        print('请求失败')

if __name__ == '__main__':
    while True:
        keyword = input('请输入要翻译的单词:')
        if keyword == 'q':
            break
        BaiduFanyi(keyword)

3 使用requests的post请求

import requests
import json
import ssl

#全局取消证书验证
ssl._create_default_https_context = ssl._create_unverified_context

def BaiDufanyi(keyword):
    # 请求的url
    url = 'https://fanyi.baidu.com/sug'  # 由post实时信息获得
    # post 发送的数据
    data = {
        'kw': keyword
    }

    # 发起请求,抓取信息
    res = requests.post(url,data=data)

    if res.status_code == 200:
        # 获取结果
        # json_data = json.loads(res.content.decode('utf-8'))
        json_data = res.json()
        print(json_data['data'][0]['v'])
    else:
        print('请求失败')

if __name__ == '__main__':
    while True:
        keyword = input('请输入要翻译的单词:')
        if keyword == 'q':
            break
        BaiDufanyi(keyword)

4 总结

上一篇下一篇

猜你喜欢

热点阅读