您的当前位置:首页正文

Python网络爬虫-requests库学习笔记

2024-12-02 来源:个人技术集锦

一. Requests库入门

Requests库的安装:
以管理员身份运行cmd,并执行以下语句:

pip install requests

测试是否安装成功:

import requests
r = requests.get("http://www.baidu.com")
print(r.status_code)
r.text

Requests库的7个主要方法:

方法说明
requests.request()构造一个请求,支撑以下各方法的基础方法
requests.get()获取HTML网页的主要方法,对应于HTTP的GET
requests.head()获取HTML网页头信息的方法,对应于HTTP的HEAD
requests.post()向HTML网页提交POST请求的方法,对应于HTTP的POST
requests.put()向HTML网页提交PUT请求的方法,对应于HTTP的PUT
requests.patch()向HTML网页提交局部修改请求,对应于HTTP的PATCH
requests.delete向HTML页面提交删除请求,对应于HTTP的DELETE

Requests库的get()方法:

r = requests.get(url)

1)r:返回一个包含服务器资源的Response对象
2)requests.get(url):构造一个向服务器请求资源的Request对象

requests.get(url, params=None, **kwargs)

1)url :拟获取页面的url链接
2)params :url中的额外参数,字典或字节流格式,可选
3) **kwargs: 12个控制访问的参数

二. 网络爬虫Robots协议

网络爬虫的尺寸:

小规模,数据量小中规模,数据规模较大大规模,搜索引擎
爬取速度不敏感爬取速度敏感爬取速度关键
Requests库 >90%Scrapy库定制开发
爬取网页 玩转网页爬取网站 爬取系列网站爬取全网

网络爬虫的限制

Robots协议:
Robots Exclusion Standard,网络爬虫排除标准

  1. 作用:
    网站告知网络爬虫哪些页面可以抓取,哪些不行
  2. 形式:
    在网站根目录下的robots.txt文件

三. Requests库网络爬虫实例

3.1 XX商品页面的爬取

全代码:

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

3.2 XXX商品页面的爬取

全代码:

import requests
url ="https://www.amazon.cn/gp/product/B01M8L5Z3Y" 
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("爬取失败")

3.3 XXXXX搜索关键词提交

搜索引擎关键词提交接口:

  1. 网站的关键词接口:
    http://www.baidu.com/s?wd=keyword
  2. 网站的关键词接口:
    http://www.so.com/s?q=keyword

XX搜索全代码:

import requests
keyword = "Python" 
try:
     kv={'wd':keyword}
     r = requests.get("http://www.baidu.com/s",params=kv) 
     print(r.request.url) 
     r.raise_for_status() 
     print(len(r.text)) 
except:
     print("爬取失败")

XX搜索全代码:

import requests
keyword = "Python" 
try:
     kv = {'q':keyword}
     r = requests.get("http://www.so.com/s",params=kv) 
     print(r.request.url) 
     r.raise_for_status() 
     print(len(r.text)) 
except:
     print("爬取失败")

3.4 网络图片的爬取和储存

网络图片的爬取

  1. 网络图片链接的格式:
    http://www.example.com/picture.jpg
    国家地理:
  2. 选择一个图片Web页面:
  3. 图片地址: http://image.nationalgeographic.com.cn/2017/
    0211/20170211061910157.jpg

图片爬取全代码

import requests 
import os
url = "http://image.nationalgeographic.com.cn/2017/0211/20170211061910157.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) 
            f.close()
            print("文件保存成功")
    else:
        print("文件已存在")
except:
    print("爬取失败")

3.5 IP地址归属地的自动查询

import requests
url = "http://m.ip138.com/ip.asp?ip=" 
try:
	r= requests.get(url+'202.204.80.112') 
	r.raise_for_status()
	r.encoding = r.apparent encoding 
	print(r.text[-500:]) 
except:
	print("爬取失败")
显示全文