python学习之——Requests库的5个小实例

1、获取京东某个商品的信息

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

2、获取亚马逊某个商品的信息

实例2与实例1存在一些区别,亚马逊网站会进行来源审查

import requests
url = 'https://www.amazon.cn/dp/B01N6KMXF0/ref=s9_acsd_ri_bw_r2_r0_3_i?pf_rd_m=A1U5RCOVU0NYF2&pf_rd_s=merchandised-search-3&pf_rd_r=J68K7WQ4X4HQFMA4V7CF&pf_rd_t=101&pf_rd_p=c3aaa05e-9c4b-4c78-a96e-72f860b7d59d&pf_rd_i=144154071'
r = requests.get(url)
print(r.status_code) 
print(r.request.headers) 

 结果:503

   {'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}

url地址是亚马逊某个商品的链接
从输出的headers可以看出’User-Agent’: ‘python-requests/2.23.0’,网站会限制其访问
解决:将headers参数设置为user-agent:Mozilla/5.0,来标识为浏览器请求

import requests
url = 'https://www.amazon.cn/dp/B01N6KMXF0/ref=s9_acsd_ri_bw_r2_r0_3_i?pf_rd_m=A1U5RCOVU0NYF2&pf_rd_s=merchandised-search-3&pf_rd_r=J68K7WQ4X4HQFMA4V7CF&pf_rd_t=101&pf_rd_p=c3aaa05e-9c4b-4c78-a96e-72f860b7d59d&pf_rd_i=144154071'
kw = {'user-agent': 'Mozilla/5.0'}
try:
    r = requests.get(url, headers=kw)
    r.raise_for_status()
    r.encoding = r.apparent_encoding
    print(r.text[:1000])
except:
    print('爬取失败!')

3、百度/360关键词提交

要实现关键词的提交,首先要知道两个搜索引擎的关键词接口
百度:

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

360:

http://www.so.com/s?q=keyword

代码:

import requests
url = 'https://www.so.com/s'
kv = {'q': 'python'}
try:
    r = requests.get(url, params=kv)
    r.raise_for_status()
    r.encoding = r.apparent_encoding
    print(r.request.url)  # 返回搜索python时的url链接:https://www.so.com/s?q=Python
    print(len(r.text))
except:
    print('爬取失败!')

4、网络图片的爬取和存储

import requests
import os
url = 'http://kr.shaodiyejin.com/file/2020/0228/smallee757776baa681e0f5af2fcf87084932.jpg'  # 图片链接
root = 'D://pics//'   # 图片保存路径,或者'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)
        f = open(path, 'wb')
        f.write(r.content)
        f.close()
        print('文件保存成功')
    else:
        print('文件已存在')
except:
    print('图片获取失败')

当然也可以爬取动态或者短视频,只需要有正确的链接地址

5、ip地址归属地查询

import requests
url = "http://ip.tool.chinaz.com/"
try:
    r=requests.get(url+'166.111.4.100')
    r.raise_for_status
    print(r.status_code)
    r.encoding = r.apparent_encoding
    print(r.text[18000:19000])
except:
    print('获取失败')

注意:
1、要获取网站的提交格式(最重要)

这是查询ip地址:202.204.80.112时,网址的格式

不同的网站格式不同,这个自己查看
2、不同网站返回的信息不同,以上面为例,在返回的r.text中,ip地址归属地在18000~19000字节之间,这个需要字节去找。r.text是返回的所有信息
3、有些网站可能不行

摘自:https://blog.csdn.net/weixin_41897680/article/details/104592533

posted @ 2020-04-22 19:29  Arbitrary233  阅读(484)  评论(0编辑  收藏  举报