本文主要是介绍爬虫基本原理介绍、实现及问题解决、爬虫实战、爬取经典moba游戏英雄列表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
🌟 前言
欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍
🤖 洛可可白:个人主页
🔥 个人专栏:✅前端技术 ✅后端技术
🏠 个人博客:洛可可白博客
🐱 代码获取:bestwishes0203
📷 封面壁纸:洛可可白wallpaper
文章目录
- 爬虫基本原理介绍、实现及问题解决、爬虫实战、爬取经典moba游戏英雄列表
- 基本原理
- 实现方法
- 问题解决
- Python爬虫简单实现
- 数据清洗
- 安装BeautifulSoup
- 解析文档
- 提取数据
- 数据清洗
- 存储数据
- 爬取经典moba游戏英雄列表
- 完整代码
- 运行代码:
- 运行结果
- 🎉 往期精彩回顾
爬虫基本原理介绍、实现及问题解决、爬虫实战、爬取经典moba游戏英雄列表
爬虫(Web Crawler)
是一种自动化的网络机器人,其基本功能是从互联网上抓取信息。爬虫的工作原理、实现方法以及可能遇到的问题及其解决方案如下:
基本原理
- 请求(Request):爬虫向目标网站发送HTTP请求,获取网页内容。
- 响应(Response):服务器处理请求后,返回网页的HTML、JSON或其他格式的响应数据。
- 解析(Parsing):爬虫解析响应内容,提取有用信息或链接。
- 存储(Storage):将提取的数据存储到数据库或文件中。
- 遍历(Traversal):根据解析出的链接,递归或迭代地发起新的请求,继续抓取其他网页。
实现方法
- 选择合适的工具:Python是实现爬虫的流行语言,常用的库有Requests、BeautifulSoup、lxml和Scrapy。
- 编写爬虫代码:
- 使用
requests
库发起请求获取网页内容。 - 使用
BeautifulSoup
或lxml
解析HTML,提取数据。 - 使用正则表达式或XPath选择器定位所需信息。
- 遍历页面中的链接,构建待抓取的URL队列。
- 使用
- 遵守robots.txt协议:robots.txt文件定义了搜索引擎爬虫可以抓取的网站范围,合法的爬虫应遵守该协议。
- 设置User-Agent:模拟浏览器的User-Agent,避免被识别为爬虫而被封禁。
- 异常处理:编写代码处理可能出现的异常,如网络请求失败、解析错误等。
问题解决
- 反爬虫机制:
- IP封禁:使用代理服务器池,轮换IP地址。
- 请求频率限制:设置合理的请求间隔,避免过快请求。
- 验证码:使用OCR技术或第三方服务识别验证码。
- 动态内容:分析Ajax请求,模拟浏览器行为或使用Selenium获取动态加载的数据。
- 数据清洗:对抓取的数据进行清洗和格式化,以便后续处理和分析。
- 性能优化:
- 使用多线程或异步IO提高爬取效率。
- 合理设计数据存储结构,提高读写效率。
- 法律风险:尊重版权和隐私,遵守相关法律法规,避免侵权行为。
爬虫的开发和使用需要遵循法律法规和道德标准,不得侵犯他人权益。在实际应用中,应尽量减少对目标网站的影响,合理合法地使用爬虫技术。
Python爬虫简单实现
以下是一个简单的Python爬虫脚本,它使用requests
库从百度网站获取HTML内容,并将其保存到本地文件中。我已经为代码添加了注释,以便更好地理解每一步的过程。
import requestsresponse = requests.get('https://www.baidu.com')
html = response.content.decode()
print(html)with open('data/json/baidu.html', 'w') as fp:fp.write(html)
print('保存完毕!')
在运行上述脚本时,需要注意以下几点:
- 确保
requests
库已经安装在你的Python环境中。如果没有安装,可以通过运行pip install requests
来安装。 - 脚本中的
data/json/baidu.html
是保存文件的路径和文件名,你需要根据你的文件系统结构来修改这个路径,确保程序有权限写入到该路径。 - 如果你运行脚本时遇到网络问题,如无法访问百度网站,可能需要检查你的网络连接,或者检查是否有代理、VPN等网络设置影响了请求。
- 由于网络请求可能受到目标网站的反爬虫策略影响,建议在实际使用中添加适当的请求头、User-Agent等信息,并遵守目标网站的robots.txt文件规定。
数据清洗
BeautifulSoup
是一个用于解析HTML和XML文档的Python库,它创建了一个解析树,使得我们可以方便地提取和操作页面数据。在数据清洗过程中,BeautifulSoup
可以帮助我们从网页中提取有用的信息,并将其转换为统一的格式。以下是使用 BeautifulSoup
进行数据清洗的基本步骤:
安装BeautifulSoup
如果你还没有安装 BeautifulSoup
,可以通过以下命令进行安装:
pip install beautifulsoup4
解析文档
首先,你需要一个HTML或XML文档作为输入。这可以是通过HTTP请求获取的网页内容,也可以是本地文件。
from bs4 import BeautifulSoup# 假设我们已经有了HTML内容,可以直接解析
html_content = """
<html>
<head><title>页面标题</title></head>
<body>
<div class="content"><p class="date">2023-03-17</p><ul id="list"><li class="item">第一项</li><li class="item">第二项</li></ul>
</div>
</body>
</html>
"""# 使用BeautifulSoup解析HTML
soup = BeautifulSoup(html_content, 'html.parser') # 'html.parser'是解析器,也可以使用'lxml'等
提取数据
使用 BeautifulSoup
提供的方法,如 find()
, find_all()
, select()
等,来定位和提取所需的元素。
# 提取单个元素
date_tag = soup.find('p', class_='date')
date = date_tag.text.strip() # 去除空白字符# 提取多个元素
items = soup.find_all('li', class_='item')
item_texts = [item.text.strip() for item in items] # 列表推导式提取所有文本内容
数据清洗
对提取出的数据进行清洗,包括去除空白字符、标准化格式、转换数据类型等。
# 去除空白字符
cleaned_date = date.replace('\n', '').replace(' ', '')# 标准化格式,例如日期格式
standard_date = cleaned_date.replace('-', '')# 转换数据类型,例如将字符串转换为整数或浮点数
# 假设我们有一个价格字符串
price_str = '¥29.99'
price = float(price_str.replace('¥', '')) # 去除货币符号并转换为浮点数
存储数据
将清洗后的数据存储到适当的数据结构中,如列表、字典、数据帧等。
# 将清洗后的数据存储到字典中
data = {'date': standard_date,'items': item_texts
}# 或者存储到列表中
data_list = [{'date': standard_date, 'items': item_texts}
]# 如果需要,可以将数据保存到文件或数据库中
import json
with open('data.json', 'w', encoding='utf-8') as f:json.dump(data_list, f, ensure_ascii=False, indent=4)
以上步骤展示了如何使用 BeautifulSoup
进行基本的数据清洗。在实际应用中,你可能需要根据具体的网页结构和数据需求,编写更复杂的解析和清洗逻辑。此外,BeautifulSoup
也提供了许多其他功能,如处理编码问题、解析嵌套标签等,可以根据需要进行学习和使用。
爬取经典moba游戏英雄列表
完整代码
import requests
from pyquery import PyQueryurl = 'https://pvp.qq.com/web201605/herolist.shtml'
html = requests.get(url).content
# print(html)doc = PyQuery(html)items = doc('.herolist > li').items()
# print(items)
# 生成迭代对象# 循环遍历
for item in items:# print(item)url = item.find('img').attr('src')# print(url)urls = 'http:' + urlname = item.find('a').text()# print(name)url_content = requests.get(urls).content# 下载 w write b bytes 二进制写入with open('data/herolist/' + name + '.jpg', 'wb') as file:# 保存file.write(url_content)print('正在下载:%s---------%s' % (name, urls))print('下载完毕')
运行代码:
运行结果
如果对你有帮助,点赞、收藏、关注是我更新的动力!👋🌟🚀
🎉 往期精彩回顾
- 前端开发的发展史:框架与技术栈的演变
- 706阅读 · 11点赞 · 8收藏
- 打字通小游戏制作教程:用HTML5和JavaScript提升打字速度
- 588阅读 · 24点赞 · 18收藏
- 扫雷小游戏制作教程:用HTML5和JavaScript打造经典游戏
- 776阅读 · 15点赞 · 20收藏
- 拼图小游戏制作教程:用HTML5和JavaScript打造经典游戏
- 487阅读 · 9点赞 · 12收藏
- Mock.js 基本语法与应用笔记
- 280阅读 · 5点赞 · 9收藏
- 排序算法全景:从基础到高级的Java实现
- 679阅读 · 25点赞 · 9收藏
- CentOS系统上安装Redis操作教程
- 410阅读 · 4点赞 · 4收藏
- 打造你的HTML5打地鼠游戏:零基础入门教程
- 1131阅读 · 28点赞 · 30收藏
- 打造你的贪吃蛇游戏:HTML、CSS与JavaScript的完美结合
- 1078阅读 · 26点赞 · 12收藏
- 快速上手:使用Hexo搭建并自定义个人博客
- 669阅读 · 19点赞 · 20收藏
- 在Vue中处理接口返回的二进制图片数据
- 704阅读 · 21点赞 · 18收藏
- 打造经典游戏:HTML5与CSS3实现俄罗斯方块
- 1117阅读 · 31点赞 · 23收藏
- Spring Boot中Excel数据导入导出的高效实现
- 1066阅读 · 23点赞 · 22收藏
- Spring Boot中实现图片上传功能的两种策略
- 1297阅读 · 24点赞 · 13收藏
- CentOS上安装MySQL 5.7和MySQL 8.0教程
- 837阅读 · 21点赞 · 13收藏
- Spring Boot工程集成验证码生成与验证功能教程
- 1417阅读 · 39点赞 · 17收藏
- Spring Boot 3项目集成Swagger3教程
- 809阅读 · 15点赞 · 8收藏
- CentOS上安装JDK的详细教程
- 739阅读 · 12点赞 · 13收藏
- 解决前端项目中Node.js版本不一致导致的依赖安装错误
- 876阅读 · 17点赞 · 16收藏
- 入门指南:使用uni-app构建跨平台应用
- 1315阅读 · 29点赞 · 9收藏
- Vue项目中使用Mock.js进行API模拟
- 655阅读 · 17点赞 · 7收藏
- Vue组件间通信实践
- 866阅读 · 24点赞 · 18收藏
- CentOS上安装与配置Nginx
- 683阅读 · 9点赞 · 6收藏
- Vue跳转页面传递参数
- 268阅读 · 5点赞 · 4收藏
- vue项目如何下载使用gsap动画库
- 551阅读 · 1点赞 · 0收藏
- VS Code上搭建React开发环境
- 2286阅读 · 2点赞 · 10收藏
- vue命令式组件封装以及使用
- 819阅读 · 2点赞 · 3收藏
- springboot项目常用配置
- 379阅读 · 1点赞 · 0收藏
- 如何在Vue中使用百度地图API来创建地图应用程序。
- 345阅读 · 3点赞 · 1收藏
- 手把手教你CentOS下载Nginx配置使用
- 464阅读 · 2点赞 · 3收藏
- vue3 setup语法糖的三种书写方法
- 2824阅读 · 5点赞 · 14收藏
- vue3中vuex 的使用基本使用和二次封装
- 447阅读 · 3点赞 · 1收藏
- MySQL基础全套全网最详细讲解
- 770阅读 · 3点赞 · 6收藏
- 前端开发之响应式布局,响应式 HTML, CSS and JavaScript 框架介绍;
- 703阅读 · 3点赞 · 2收藏
- VS code搭建C/C++运行环境简单易上手
- 2786阅读 · 5点赞 · 8收藏
- Vue.2&Vue.3项目引入Element-UI教程&踩坑
- 9268阅读 · 22点赞 · 82收藏
- Vue项目引入Echarts可视化图表库教程&踩坑
- 2203阅读 · 3点赞 · 5收藏
- VirtualBox虚拟机搭建CentOS系统教程
- 4493阅读 · 4点赞 · 32收藏
- VS Code上搭建Vue开发环境
- 10662阅读 · 13点赞 · 64收藏
- Color-UI 简介及使用教程
- 5921阅读 · 2点赞 · 13收藏
这篇关于爬虫基本原理介绍、实现及问题解决、爬虫实战、爬取经典moba游戏英雄列表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!