requests爬虫的简单使用

查找本地 python 解析器的 路径
  • 命令: win + R 启动cmd, 在cmd中,执行 where python, 可查看python环境所在的路径
这是我的python环境所在的路径
	E:\Python 3.7\python.exe

在这里插入图片描述

使用urllib爬取网页图片
# 1.导入 urllib 中的 request 包
from urllib import request

# 2.下载图片
request.urlretrieve('https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png', 'bd.png')   # 图片被保存在当前工作目录下
'''
request.urlretrieve(url, img_name)
url: 表示网页图片的地址
img_name: 表示保存图片的名称,包括保存的扩展名
'''

使用requests爬虫

requests是第三方库,所以要手动安装

  • 命令pip install requests -i https://pypi.douban.com/simple

案例1: get请求

### 爬取百度搜索python关键字的页面内容

# 1.安装 requests 包 : pip install requests -i https://pypi.douban.com/simple

# 2.导入 requests 包
import requests

# 3.模拟浏览器的请求头,发送请求数据
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'
}

# 4.发送get请求,用get方法请求百度的页面
response = requests.get(url='https://www.baidu.com/s?wd=python', headers=headers)

# 5.获取爬取的内容
print(response.text)   # response.text返回响应的整个页面内容,即获取网页源代码

# 6.把爬取到的内容保存到文件
with open('baidu.html', 'w', encoding='utf-8') as fp:
    fp.write(response.text)
    
response.text与response.content的区别:
response.text 返回的是源代码的文本形式(str)
response.content 返回的是源代码的二进制形式(bites)
response.content.decode() 解码后返回的是源代码的文本形式---与查看网页源码一致
注意
(1)
# 5.获取爬取的内容
print(response.text)   # response.text返回响应的整个页面内容,即获取网页源代码

# 6.把爬取到的内容保存到文件
## 使用respons.text获取网页内容时,选择这种方式保存文件
 with open('baidu.html', 'w', encoding='utf-8') as fp:
     fp.write(response.text)


(2)
# 5.获取爬取的内容
print(response.content.decode())  # 等价于response.text , 解码后返回的是源代码的文本形式---与查看网页源码一致

# 6.把爬取到的内容保存到文件
## 使用response.content.decode()获取网页内容时,选择这种方式保存文件
with open('baidu2.html', 'wb') as fp:   # wb:以二进制形式写入
    fp.write(response.content)
    
get请求中响应对象的属性与方法:
  • response.url : 获取请求的url
  • response.encoding : 返回网页的编码格式(response.encoding = ‘utf-8’)
  • response.status_code : 返回网页状态码
  • response.headers : 获取响应头的信息 , 以dict形式返回
  • response.text : 获取网页源代码 , 以str形式返回
  • response.content : 获取网页内容 , 以bytes形式返回
  • response.content.decode() : 获取网页源代码 , 以str形式返回
  • response.json() : 获取json数据 , 以dict或list形式返回
  • response.request.headers : 查看请求头信息

案例2: post请求

### 模拟百度翻译

# 1.导包
import requests
import json

# 2.模拟浏览器的请求头,发送请求数据
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'
}

# 3.通过字典形式模拟post数据
data = {
    'kw':'job'
}

# 4.发送post请求,请求百度翻译的页面
response = requests.post(url='https://fanyi.baidu.com/sug', headers=headers, data=data)

# 5.获取网页数据
print(response.json())  # 获取网页数据,以字典形式返回   
''' 
结果:
{'errno': 0, 'data': [{'k': 'job', 'v': 'n. 职业; (一件)工作; 职责; (作为一个单元处理的)作业 vt. 承包; 代客买卖 vi. '}, {'k': 'Jobo', 'v': '[地名] [厄瓜多尔] 霍沃'}, {'k': 'jobs', 'v': 'n. 职业; (一件)工作( job的名词复数 ); 职责; (作为一个单元处理的)作业'}, {'k': 'Jobs', 'v': '[人名] 乔布斯'}, {'k': 'JOBS', 'v': 'abbr. Job Opportunities and Basic Skills 工作环境与基本技能'}]}
'''

注意
# 5.获取网页数据
(1)
print(response.text)  # 直接使用该方法不可行
'''
结果: 由此可以看到, 该数据是字典类型的, 所以,我们必须获取 json数据 -- response.json()会以dict或list形式返回数据
{"errno":0,"data":[{"k":"job","v":"n. \u804c\u4e1a; \uff08\u4e00\u4ef6\uff09\u5de5\u4f5c; \u804c\u8d23; \uff08\u4f5c\u4e3a\u4e00\u4e2a\u5355\u5143\u5904\u7406\u7684\uff09\u4f5c\u4e1a vt. \u627f\u5305; \u4ee3\u5ba2\u4e70\u5356 vi. "},{"k":"Jobo","v":"[\u5730\u540d] [\u5384\u74dc\u591a\u5c14] \u970d\u6c83"},{"k":"jobs","v":"n. \u804c\u4e1a; \uff08\u4e00\u4ef6\uff09\u5de5\u4f5c( job\u7684\u540d\u8bcd\u590d\u6570 ); \u804c\u8d23; \uff08\u4f5c\u4e3a\u4e00\u4e2a\u5355\u5143\u5904\u7406\u7684\uff09\u4f5c\u4e1a"},{"k":"Jobs","v":"[\u4eba\u540d] \u4e54\u5e03\u65af"},{"k":"JOBS","v":"abbr. Job Opportunities and Basic Skills \u5de5\u4f5c\u73af\u5883\u4e0e\u57fa\u672c\u6280\u80fd"}]}
'''

(2)
print(json.loads(response.text))  # 将文本信息转换为字典信息  效果==respons.json()
'''
结果:
{'errno': 0, 'data': [{'k': 'job', 'v': 'n. 职业; (一件)工作; 职责; (作为一个单元处理的)作业 vt. 承包; 代客买卖 vi. '}, {'k': 'Jobo', 'v': '[地名] [厄瓜多尔] 霍沃'}, {'k': 'jobs', 'v': 'n. 职业; (一件)工作( job的名词复数 ); 职责; (作为一个单元处理的)作业'}, {'k': 'Jobs', 'v': '[人名] 乔布斯'}, {'k': 'JOBS', 'v': 'abbr. Job Opportunities and Basic Skills 工作环境与基本技能'}]}
'''

(3)
print(response.json())  # 获取网页数据,以字典形式返回     效果==json.loads(respons.text)
'''
结果:
{'errno': 0, 'data': [{'k': 'job', 'v': 'n. 职业; (一件)工作; 职责; (作为一个单元处理的)作业 vt. 承包; 代客买卖 vi. '}, {'k': 'Jobo', 'v': '[地名] [厄瓜多尔] 霍沃'}, {'k': 'jobs', 'v': 'n. 职业; (一件)工作( job的名词复数 ); 职责; (作为一个单元处理的)作业'}, {'k': 'Jobs', 'v': '[人名] 乔布斯'}, {'k': 'JOBS', 'v': 'abbr. Job Opportunities and Basic Skills 工作环境与基本技能'}]}
'''

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值