美文网首页
LA1 Requests库实验

LA1 Requests库实验

作者: icey_J | 来源:发表于2019-02-11 17:30 被阅读0次

    Request库实战

    [TOC]

    实例1:京东商品页面爬取

    例如我们爬取最新的荣耀V20信息,目前仅仅是将HTML内容爬取下来

    V20京东地址为:https://item.jd.com/39167157921.html

    导入requests库 - 输入url - 爬取html

    import requests
    try:
        r = requests.get('https://item.jd.com/39167157921.html')
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        print(r.text[:1000])
    except:
        print('爬取失败')
    

    结果为

    '<!DOCTYPE HTML>\n<html lang="zh-CN">\n<head>\n    <!-- shouji -->\n    <meta http-equiv="Content-Type" content="text/html; charset=gbk" />\n    <title>华为(HUAWEI) 荣耀v20手机 魅海蓝 8+128G 全网通【图片 价格 品牌 报价】-京东</title>\n    <meta name="keywords" content="华为(HUAWEI) 荣耀v20手机 魅海蓝 8+128G 全网通,华为(HUAWEI),,京东,网上购物"/>\n    <meta name="description" content="华为(HUAWEI) 荣耀v20手机 魅海蓝 8+128G 全网通图片、价格、品牌样样齐全!【京东正品行货,全国配送,心动不如行动,立即购买享受更多优惠哦!】" />\n    <meta name="format-detection" content="telephone=no">\n    <meta http-equiv="mobile-agent" content="format=xhtml; url=//item.m.jd.com/product/39167157921.html">\n    <meta http-equiv="mobile-agent" content="format=html5; url=//item.m.jd.com/product/39167157921.html">\n    <meta http-equiv="X-UA-Compatible" content="IE=Edge">\n    <link rel="canonical" href="//item.jd.com/39167157921.html"/>\n        <link rel="dns-prefetch" href="//misc.360buyimg.com"/>\n    <link rel="dns-prefetch" href="//static.360buyimg.com"/>\n    <link rel="dns-prefetch" href="//img10.360buyimg.com"/>\n    '
    

    实例2:亚马逊商品页面爬取

    ​ 为什么要用Amazon呢,因为它的网站加入了反扒机制,会检测用户域,如果是爬虫则会拒绝访问,因此需要修改user-agent域来伪装成浏览器

    选择一个商品网页,kindle泡面器https://www.amazon.cn/dp/B07746N2J9/ref=br_bsl_pdt-1?pf_rd_m=A1AJ19PSB66TGU&pf_rd_s=desktop-bestsellers-1&pf_rd_r=3XP0DWDNGYDFH219T9HY&pf_rd_r=3XP0DWDNGYDFH219T9HY&pf_rd_t=36701&pf_rd_p=546d17f0-7c03-421a-b79c-845e0ff4f521&pf_rd_p=546d17f0-7c03-421a-b79c-845e0ff4f521&pf_rd_i=desktop

    import requests
    url = 'https://www.amazon.cn/dp/B07746N2J9/ref=br_bsl_pdt-1?pf_rd_m=A1AJ19PSB66TGU&pf_rd_s=desktop-bestsellers-1&pf_rd_r=3XP0DWDNGYDFH219T9HY&pf_rd_r=3XP0DWDNGYDFH219T9HY&pf_rd_t=36701&pf_rd_p=546d17f0-7c03-421a-b79c-845e0ff4f521&pf_rd_p=546d17f0-7c03-421a-b79c-845e0ff4f521&pf_rd_i=desktop'
    try:
        kv = {'user-agent':'Mozilla/5.0'} #Chrome works too
        r = requests.get(url, headers = kv)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        print(r.text[1000:2000])
    except:
        print('爬取失败')
    

    实例3:百度关键字提交

    百度关键字url接口:

    https://www.baidu.com/s?wd=keyword
    

    这是一个关键字的情况,前面提到params参数可以添加参数到url,所以通过添加参数params来添加搜索关键词,而关键词的键值对是以wd=value出现

    import requests
    keyword = 'Python'
    try:
        kv = {'wd':keyword}
        r = requests.get('baidu.com/s',params=kv)
        print(r.request.url)
        r.raise_for_status()
        print(len(t.text))
    except:
        print('Failed')
    

    实例4:网络图片的爬取和存储

    ​ 网络图片的爬取首先要取得图片链接的格式,使用get取得二进制数据后,使用write函数wb二进制写入

    国家地理图片爬取

    试一试中国国家地理的图片http://img0.dili360.com/ga/M01/34/17/wKgBy1SzO_SAeNc3AA6kjU76gRY482.tub.jpg

    url最后的一段是文件的名称和格式

    import requests
    import os
    url = 'http://img0.dili360.com/ga/M01/34/17/wKgBy1SzO_SAeNc3AA6kjU76gRY482.tub.jpg'
    root = 'D://pics//'
    path = root + url.split('/')[-1]
    try:
        if not os.path.exists(root):
            os.mkdir(root)    #创建文件夹
        if not os.path.exists(path):
            r = requests.get(url)
            with open(path, 'wb') as f:
                f.write(r.content)    #二进制文件,用content返回信息
                print('File Saved')
        else:
            print('File existed')
    except:
        print('Download Faild')
    

    漂亮~

    img

    相关文章

      网友评论

          本文标题:LA1 Requests库实验

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