网站首页 > 博客文章 正文
转载说明:原创不易,未经授权,谢绝任何形式的转载
网络爬虫是一种快速从网站提取数据并将其用于自己的项目需求的好方法。在这篇文章中,您将学习如何使用Python制作网络爬虫(抓取网页数据)。
1、引入模块
第一步是导入您的网络爬虫所需的模块。我们将在此示例中使用requests,BeautifulSoup和json。
import requests
from bs4 import BeautifulSoup
import json
如何安装 BeautifulSoup 和 json?
pip install requests
pip install beautifulsoup4
2、设置要抓取的URL
接下来,我们需要设置我们将要爬取的URL。这个例子将会爬取CDKeys网站上的产品价格。
url = 'https://www.cdkeys.com/pc'
3、发送请求 & 解析 HTML
设置URL后,我们需要使用Requests库和BeautifulSoup发送请求并解析HTML响应。
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
4、选择数据
现在我们已经解析了HTML,我们需要选择我们感兴趣的从页面中提取的数据。在这个例子中,我们将选择每个产品的原始价格字段和现在售价。
查看网页对应HTML源文件,产品列表对应的每个产品标签是 li.product-item
原始价格对应的字段是:span[data-price-type="oldPrice"] span
基于这个分析,我们开始编写代码:
oldPrices = soup.select('span[data-price-type="oldPrice"] span')
products = soup.select('li.product-item')
这里定义的这两个变量,是 list 列表结构。
5、循环遍历产品
最后,我们可以遍历每个产品并提取所需的数据。我们可以使用json模块将HTML属性中的数据转换为JSON。在这个例子中,确实有一个HTML属性,其中包含CDKeys网站上所有产品信息的JSON字符串。通常,您不会这么幸运,而是必须选择特定标签的内部文本或HTML。
for i in range(len(products)):
# convert the data in the html attributes to json
prod = json.loads(products[i]['data-impression'])
# print the product info
print(f"{prod['name']} - ${prod['price']} - {oldPrices[i].text}")
就是这样! 您现在拥有一个用Python编写的功能正常的网络爬虫! 网络爬虫是一个强大的工具,可以用于许多不同的应用程序,基于这个你可以尝试其它的站点进行学习。
完整代码
import requests
from bs4 import BeautifulSoup
import json
url = 'https://www.cdkeys.com/pc'
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
oldPrices = soup.select('span[data-price-type="oldPrice"] span')
products = soup.select('li.product-item')
for i in range(len(products)):
# convert the data in the html attributes to json
prod = json.loads(products[i]['data-impression'])
# print the product info
print(f"{prod['name']} - ${prod['price']} - {oldPrices[i].text}")
运行后的效果,如下图所示:
使用爬虫工具时,你需要注意这些
- 合法性和道德性:确保你的爬虫行为是合法的和道德的。你需要遵循网站的使用条款,确保你的爬虫行为不会侵犯他人的权利或造成不必要的麻烦。
- 爬虫速度:避免过度频繁地爬取一个网站。如果你的爬虫速度太快,可能会给网站服务器带来过多的负担,甚至导致服务器宕机。为了避免这种情况,你可以设置合适的时间间隔,避免一次性请求过多的数据。
- 数据的处理和储存:确保你妥善地处理和储存你爬取的数据。你需要注意储存数据的格式,以及如何处理数据中的异常值和缺失值。
- 爬虫的异常处理:在爬取数据时,可能会遇到各种异常情况,例如网络连接中断、网站返回错误信息等。你需要在爬虫中添加合适的异常处理机制,避免程序因为这些异常情况而崩溃。
- 网站的反爬机制:有些网站会采取反爬机制,例如限制访问频率、添加验证码等。为了避免被网站识别为爬虫,你需要了解这些反爬机制,并相应地进行处理。
- 爬虫的隐私保护:在爬取数据时,你需要保护用户的隐私。你需要避免收集用户的敏感信息,例如姓名、地址、电话号码等。如果你需要爬取这些敏感信息,需要获得用户的明确授权。
在使用Python工具爬取网络数据时,需要遵循合法性、道德性和隐私保护原则,同时注意爬虫速度、数据处理和储存、异常处理和网站反爬机制等方面的问题。
结束
今天的分享就到这里,感谢你的阅读,希望能够帮助到你,文章创作不易,如果你喜欢我的分享,别忘了点赞转发,让更多有需要的人看到,最后别忘记关注「前端达人」,你的支持将是我分享最大的动力,后续我会持续输出更多内容,敬请期待。
猜你喜欢
- 2024-12-18 轻松解析数据!你不可不知的Python宝藏库——parser模块
- 2024-12-18 基于Google Gemini的网页抓取 谷歌怎么抓取网页里的图片
- 2024-12-18 使用Python抓取欧洲足球联赛数据 python 竞彩
- 2024-12-18 网络爬虫——从网站中提取有用的数据
- 2024-12-18 网上售卖几百一月的微信机器,Python几十行代码就能搞定
- 2024-12-18 一个Python编写的小说下载器 用python写小说
- 2024-12-18 LangChainV0.2-进阶教程:构建一个RAG应用
- 2024-12-18 机器学习第五发:BS教你如何解析网页,规整数据?
- 2024-12-18 python3的bs4模块的安装、介绍 python中bs4模块
- 2024-12-18 Crawl4AI:让AI轻松读懂网页的神器
你 发表评论:
欢迎- 367℃用AI Agent治理微服务的复杂性问题|QCon
- 358℃初次使用IntelliJ IDEA新建Maven项目
- 357℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 351℃Maven技术方案最全手册(mavena)
- 348℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 346℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 345℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 342℃从头搭建 IntelliJ IDEA 环境(intellij idea建包)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)