Requests库入门实例

Posted hao11

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Requests库入门实例相关的知识,希望对你有一定的参考价值。

了解了Requests库的基本用法,附上一篇理论链接https://www.cnblogs.com/hao11/p/12593419.html  

我们就可以做一些小实例了

1.亚马逊商品的爬取

  技术图片

首先用get方法对亚马逊网站发送请求,然后看返回的状态码,此处503不是200,表明没有成功,

然后要看text内容,首先检查编码格式,header中不存在,用备用的替代,然后看到text中  For information about migrating to our APIs refer to our Marketplace APIs 还有确认我们是不是爬虫,说明这个网站对爬虫做了限制。

于是如下处理

技术图片

 首先查看请求头,可以看到是原生的python请求,这样会被一些网站认为爬虫被拒绝访问

  我们将请求头的代理字段替换, ‘Mozilla/5.0’ 伪装成火狐浏览器进行访问即可

  最后写的健壮点

  

#RequestAmazon.py
import requests
url = https://www.amazon.cn/
try:
    kv = {user-agent:Mozilla/5.0}
    r = requests.get(url, headers=kv)
    r.raise_for_status()
    r.encoding = r.apparent_encoding
    print(r.text[1000:2000])
except:
    print("爬取失败")

2.百度/谷歌搜索关键词提交

  首先打开百度,输入python并回车,观察网址变化

技术图片技术图片

  百度的wd字段就是我们搜索的关键词

  于是我们可以尝试:

    http://www.baidu.com/s?wd=python

    也是一样的

    同理查看google可知其接口为

    https://www.google.com/search?q=keyword

  于是可以用爬虫实现查找功能

#Requestbaidu.py
import requests
keyword = python
url = https://www.baidu.com/s #google把网站换了 s换成search
try:
    kv = {wd:keyword}  #google把wd换成q
    r = requests.get(url, params=kv)
    r.raise_for_status()
    r.encoding = r.apparent_encoding
    print(r.text[1000:2000])
except:
    print("爬取失败")

3.图片爬取和存储

  百度搜索一张图片,点击右键,在新分页中开启图片,然后复制网址过来即可。

#Pcis.py
import requests
import os
url = https://pic4.zhimg.com/80/f2ded3c7f2873e5e7d48c139e1203e5f_720w.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, timeout=30)
        with open(path,wb) as f:      #将文件以二进制打开
            f.write(r.content)          #content是二进制数据
            f.close()
            print(文件保存成功)
    else:
        print(文件已存在)
except:
    print("爬取失败")

  跑一下,成功后去对应的路径就能看到

4.ip归属地查询

   这个实例和实例二是类似,但有区别,这个实例直接字符串连接。

    首先登录m.ip138.com 查询ip地址

    技术图片

    于是其接口是:http://m.ip138.com/ip.asp?ip=ipaddress

#IpQuerry.py
import requests
url = http://m.ip138.com/iplookup.asp?ip=
ip = 111.111.11.11
try:
    r = requests.get(url+ip, timeout=30)
    r.raise_for_status()
    r.encoding = r.apparent_encoding
    print(r.status_code)
    print(r.text[-300:])
except:
    print("爬取失败")

 

    

以上是关于Requests库入门实例的主要内容,如果未能解决你的问题,请参考以下文章

网络爬虫-课程大纲

Requests库入门

Python爬虫之Requests库入门

requests库入门

全网最全Requests库详解,实例引入,代码分析(ip代理,用户认证,证书检测)

requests库入门之小爬虫