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