美文网首页
Python爬虫|urllib和requests爬虫库POST请

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

作者: ShowMeCoding | 来源:发表于2020-09-01 22:26 被阅读0次

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

    1 网页调试工具

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

    image.png
    image.png
    在输入框输入字母的时候慢一点,每次都会出现一个sug文件,从中可以总结出相关规律:
    • 1 请求url地址:https://fanyi.baidu.com/sug
    • 2 请求方式:POST
    • 3 参数:{"kw":需要翻译的单词}
    • 4 返回结果:json格式

    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 总结

    • 爬虫的整个流程相对固定
    • 关键是找到网页是如何发送请求的规律,然后才能使用代码进行模拟
    • 先获取到网页上面的有用信息,之后则是对获取的信息进行解析,得到我们最终想要爬取的信息

    相关文章

      网友评论

          本文标题:Python爬虫|urllib和requests爬虫库POST请

          本文链接:https://www.haomeiwen.com/subject/jpnvsktx.html