当前位置: 首页 > news >正文

Python网络爬虫基础

Python网络爬虫是一种自动化工具,用于从互联网上抓取信息。它通过模拟人类浏览网页的行为,自动地访问网站并提取所需的数据。网络爬虫在数据挖掘、搜索引擎优化、市场研究等多个领域都有广泛的应用。以下是Python网络爬虫的一些基本概念:

1. 发送请求 (Request)

使用 requests

requests 是一个非常流行的 HTTP 客户端库,使用简单且功能强大。

import requestsurl = 'https://example.com'
response = requests.get(url)
print(response.text)  # 打印网页内容
设置请求头 (Headers)

为了模拟浏览器行为,通常需要设置 User-Agent 和其他请求头。

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
response = requests.get(url, headers=headers)

2. 处理响应 (Response)

状态码 (Status Code)

检查响应的状态码以确保请求成功。

if response.status_code == 200:print('请求成功')
else:print(f'请求失败,状态码: {response.status_code}')
获取内容 (Content)

可以从响应对象中获取文本内容、二进制内容等。

html_content = response.text  # 获取文本内容
binary_content = response.content  # 获取二进制内容

3. 解析 HTML (Parsing)

使用 BeautifulSoup

BeautifulSoup 是一个强大的 HTML 解析库,可以方便地从 HTML 中提取数据。

from bs4 import BeautifulSoupsoup = BeautifulSoup(html_content, 'html.parser')
title = soup.title.string  # 获取标题
print(title)
使用 lxml

lxml 是另一个高效的 XML 和 HTML 解析库,支持 XPath 表达式。

from lxml import etreehtml = etree.HTML(html_content)
title = html.xpath('//title/text()')[0]  # 使用 XPath 获取标题
print(title)

4. 数据存储 (Storage)

写入文件

将提取的数据写入文件,例如 CSV 文件。

import csvdata = [['Name', 'Age'],['Alice', 30],['Bob', 25]
]with open('data.csv', 'w', newline='', encoding='utf-8') as file:writer = csv.writer(file)writer.writerows(data)
存储到数据库

将数据存储到关系型数据库(如 MySQL)或 NoSQL 数据库(如 MongoDB)。

import sqlite3# 连接到 SQLite 数据库
conn = sqlite3.connect('example.db')
cursor = conn.cursor()# 创建表
cursor.execute('''CREATE TABLE IF NOT EXISTS users (name TEXT, age INTEGER)''')# 插入数据
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ('Alice', 30))
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ('Bob', 25))# 提交事务
conn.commit()# 关闭连接
conn.close()

5. 用户代理 (User-Agent)

设置 User-Agent 可以模拟不同浏览器的行为,避免被网站识别为爬虫。

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
response = requests.get(url, headers=headers)

6. 遵守 Robots 协议

检查网站的 robots.txt 文件,确保爬虫行为符合网站的规定。

import requestsurl = 'https://example.com/robots.txt'
response = requests.get(url)
print(response.text)

7. 异常处理 (Error Handling)

处理网络请求中的各种异常,确保爬虫的稳定性。

try:response = requests.get(url, timeout=10)response.raise_for_status()  # 如果响应状态码不是 200,抛出异常
except requests.exceptions.RequestException as e:print(f'请求失败: {e}')

8. 反爬策略

设置请求间隔

避免频繁请求导致被封禁。

import timefor i in range(10):response = requests.get(url, headers=headers)# 处理响应time.sleep(1)  # 每次请求间隔 1 秒
使用代理 IP

使用代理 IP 可以绕过 IP 封禁。

proxies = {'http': 'http://123.45.67.89:8080','https': 'https://123.45.67.89:8080'
}
response = requests.get(url, headers=headers, proxies=proxies)

9. 法律与道德

尊重版权

不要侵犯他人的版权,合法使用数据。

保护隐私

不要收集和使用个人敏感信息,遵守相关法律法规。

合法用途

确保爬虫的用途是合法的,不用于非法活动。

总结

以上是 Python 网络爬虫的一些基本概念和技术细节。通过这些知识,你可以构建一个功能完善的网络爬虫。当然,实际应用中可能会遇到更多复杂的情况,需要不断学习和实践来提升技能。

http://www.lryc.cn/news/492944.html

相关文章:

  • 每天五分钟机器学习:支持向量机数学基础之超平面分离定理
  • TCP/IP网络协议栈
  • 利用编程思维做题之最小堆选出最大的前10个整数
  • 详解MVC架构与三层架构以及DO、VO、DTO、BO、PO | SpringBoot基础概念
  • Unity C# 影响性能的坑点
  • 工作学习:切换git账号
  • 量化交易系统开发-实时行情自动化交易-8.量化交易服务平台(一)
  • Scala习题
  • 结构方程模型(SEM)入门到精通:lavaan VS piecewiseSEM、全局估计/局域估计;潜变量分析、复合变量分析、贝叶斯SEM在生态学领域应用
  • OpenCV图像基础处理:通道分离与灰度转换
  • C++ 类和对象(类型转换、static成员)
  • 【网络安全设备系列】12、态势感知
  • Linux介绍与安装指南:从入门到精通
  • BGE-M3模型结合Milvus向量数据库强强联合实现混合检索
  • 鸿蒙NEXT开发案例:文字转拼音
  • CTF之密码学(栅栏加密)
  • 修改插槽样式,el-input 插槽 append 的样式
  • UPLOAD LABS | PASS 01 - 绕过前端 JS 限制
  • 【css实现收货地址下边的平行四边形彩色线条】
  • 缓存方案分享
  • 第四十篇 DDP模型并行
  • 软件测试面试之常规问题
  • 《图像形态学运算全解析:原理、语法及示例展示》
  • 双十一线上服务调用链路追踪SkyWalking实战分析
  • 网络安全究竟是什么? 如何做好网络安全
  • 【C++】入门【一】
  • 【ArcGIS Pro实操第11期】经纬度数据转化成平面坐标数据
  • python学opencv|读取图像
  • ffmpeg RTP PS推流
  • Rust语言俄罗斯方块(漂亮的界面案例+详细的代码解说+完美运行)