python 爬虫之 爬取网站信息并保存到文件

在这里插入图片描述

文章目录

  • 前期准备
  • 探索该网页的HTML码的特点
  • 开始编写代码
  • 存入文件
  • 总的程序
  • 文件存储效果

前期准备

随便找个网站进行爬取,这里我选择的是(一个卖书的网站)
https://www.bookschina.com/24hour/62700000/
在这里插入图片描述

我的目的是爬取这个网站的这个页面的书籍的名称以及相对应的价格

探索该网页的HTML码的特点

在该网页右键,选择检查,就可以看到下面的样子
在这里插入图片描述
然后按下面图片的第一个按键(作用是:当你鼠标停留在网页时,会自动显示到对应的网页代码)
在这里插入图片描述

查找书名的特点

在这里插入图片描述
在这里插入图片描述

我们发现,书名是位于<h2 class = "name" >标签的 <a >标签里面的

在这里插入图片描述

同理,可以找到价格是位于<div class = "priceWrap" 里面的<span class = "swllPrice>标签里面的 "

那么这么就好办了

开始编写代码

import requests
from bs4 import BeautifulSoup# 设置请求头,模拟浏览器访问
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"
}# 发送GET请求获取页面内容
response = requests.get(r'https://www.bookschina.com/24hour/62700000/', headers=headers)# 打印HTTP响应状态码
print(response.status_code)# 获取页面内容
content = response.text# 使用BeautifulSoup解析HTML
soup = BeautifulSoup(content, "html.parser")# 存储书名的列表
namestore = []# 存储价格的列表
pricestore = []# 查找所有class为"name"的h2标签
allname = soup.findAll("h2", attrs={"class": "name"})# 遍历每个h2标签
for name in allname:# 在每个h2标签中查找所有的a标签realnames = name.findAll("a")# 遍历每个a标签for realname in realnames:# 将书名添加到namestore列表中namestore.append(realname.string)# 查找所有class为"priceWrap"的div标签
allprice = soup.findAll("div", attrs={"class": "priceWrap"})# 遍历每个div标签
for price in allprice:# 在每个div标签中查找所有class为"sellPrice"的span标签realprices = price.findAll("span", attrs={"class": "sellPrice"})# 遍历每个span标签for realprice in realprices:# 将价格添加到pricestore列表中pricestore.append(realprice.string)# 使用zip函数将书名和价格对应起来,并打印结果
for a, b in zip(namestore, pricestore):print(a, b)

存入文件

# 打开文件,准备写入数据,使用UTF-8编码
with open(r"d:\Desktop\畅销书以及价格.txt", "w", encoding='utf-8') as f:# 使用zip函数将书名和价格对应起来,并写入文件for a, b in zip(namestore, pricestore):# 写入书名f.write(str(a) + '\n')# 写入价格f.write(str(b) + '\n')

总的程序

import requests
from bs4 import BeautifulSoupheaders ={"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"
}responce = requests.get(r'https://www.bookschina.com/24hour/62700000/',headers = headers)print(responce.status_code)
content = responce.text
soup = BeautifulSoup(content,"html.parser")namestore = []
pricestore = []allname = soup.findAll("h2",attrs={"class" : "name"})
for name in allname:realnames = name.findAll("a")for realname in realnames:#print(realname.string)namestore.append(realname.string)allprice = soup.findAll("div",attrs={"class":"priceWrap"})
for price in allprice:realprices = price.findAll("span",attrs={"class" : "sellPrice"})for realprice in realprices:#print(realprice.string)pricestore.append(realprice.string)with open(r"d:\Desktop\畅销书以及价格.txt","w",encoding='utf-8') as f:for a, b in zip(namestore, pricestore):f.writelines(str(a) + '\n' )f.writelines(str(b) + '\n' )

文件存储效果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/180292.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git打tag和版本控制规范

我们在开发中经常会遇到要打tag的情况&#xff0c;但这个tag应该如何打呢&#xff1f;我不知道大家平时是怎么打的&#xff0c;但我基本就是从1.0.0开始进行往上递增&#xff0c;至于如何递增&#xff0c;基本凭感觉。今天同事新打了一个tag进行发版&#xff0c;然后被架构点名…

佳易王个体诊所管理系统电子处方软件,个体诊所人员服务软件,卫生室配方模板电子病历系统教程

佳易王个体诊所管理系统电子处方软件&#xff0c;个体诊所人员服务软件&#xff0c;卫生室配方模板电子病历系统教程 软件试用版下载可以点击最下方官网卡片 软件功能&#xff1a; 1、配方模板&#xff1a;可以自由添加配方分类&#xff0c;预先设置药品配方&#xff0c;可以…

【赠书第9期】巧用ChatGPT高效搞定Excel数据分析

文章目录 前言 1 操作步骤 1.1 数据清理和整理 1.2 公式和函数的优化 1.3 图表和可视化 1.4 数据透视表的使用 1.5 条件格式化和筛选 1.6 数据分析技巧 1.7 自动化和宏的创建 2 推荐图书 3 粉丝福利 前言 ChatGPT 是一个强大的工具&#xff0c;可以为你提供在 Exce…

【nlp】4.5 迁移学习实践项目(相关概念、中文分类、填空、句子关系、模型微调)

迁移学习实践项目 1 迁移学习1.1 定义与基本思想1.2 迁移学习的基本概念1.3 迁移学习的类型1.4 迁移学习的应用1.5 迁移学习的优势1.6 迁移学习的缺点1.7 迁移学习有关概念1.7.1 预训练模型(Pretrained model)1.7.2 微调(Fine-tuning)1.7.3 两种迁移方式2 迁移学习项目实战说明…

【SA8295P 源码分析】135 - QNX 以太网 iperf3 上行带宽吞吐量低的问题分析优化

【SA8295P 源码分析】135 - QNX 以太网 iperf3 上行带宽吞吐量低的问题分析优化 一、QNX 上行、下行吞吐量测试结果1.1 QNX 上行吞吐量带宽测试:200Mbps (偏差,需分析)1.2 QNX 下行吞吐量带宽测试:752Mbps (勉强达标,需优化)二、优化方法:关闭调试模块,开启QNX 最大性…

Flask使用SQLAlchemy数据库报错 RuntimeError:working outside of application context.处理

报错处理&#xff1a; http://www.manongjc.com/detail/42-oeqrsqzbiaxaelw.html https://blog.csdn.net/qq_41286373/article/details/129280569 将如下两个插件版本改为如下版本即可&#xff1a; Flask-SQLAlchemy 2.5.1 SQLAlchemy 1.4.39

Mysql中的引擎介绍(InnoDB,MyISAM,Memory)

MySQL引擎就是指表的类型以及表在计算机上的存储方式。 MySQL数据库及其分支版本主要的存储引擎有三种&#xff0c;分别是 InnoDB、MyISAM、 Memory&#xff0c;还有一些其他的&#xff0c;CSV、Blackhole等&#xff0c;比较少见&#xff0c;可以使用SHOW ENGINES语句来查看。结…

【Python 训练营】N_13 遍历字符串

题目 将字符串生成迭代器&#xff0c;逐个访问字符串中每个字符&#xff0c;并大写合并输出。 分析 字符串转换迭代器&#xff0c;for循环遍历字符串。 答案 # 方法一 s1 Python l [] for i in iter(s1): # 使用iter()函数生成迭代器l.append(i.upper()) print(.join(l)…

Linux DNS服务器相关命令

配置文件&#xff1a; /etc/dnsmasq.conf ### 可以添加修改 address IP 与自定义域名 的对应关系 修改后重启服务&#xff1a;systemctl restart dnsmasq dns服务其他指令&#xff1a; systemctl start dnsmasq systemctl stop dnsmasq systemctl enable dnsmasq ## 开机自启已…

蓝桥杯day02——第三大的数

题目 给你一个非空数组&#xff0c;返回此数组中 第三大的数 。如果不存在&#xff0c;则返回数组中最大的数。 示例 1&#xff1a; 输入&#xff1a;[3, 2, 1] 输出&#xff1a;1 解释&#xff1a;第三大的数是 1 。 示例 2&#xff1a; 输入&#xff1a;[1, 2] 输出&…

springcloud==ribbon

单独使用ribbon 建立两个服务端&#xff0c;分别是8080和8081 建立客户端 代码 package org.example.ribbon;import com.netflix.client.ClientFactory; import com.netflix.client.http.HttpRequest; import com.netflix.client.http.HttpResponse; import com.netflix.conf…

随时随地,打开浏览器即可体验的在线PS编辑器

即时设计 即时设计是国产的专业级 UI 设计工具&#xff0c;不限平台不限系统&#xff0c;在浏览器打开即用&#xff0c;能够具备 Photoshop 的设计功能&#xff0c;钢笔、矢量编辑、矩形工具、布尔运算等设计工具一应俱全&#xff0c;是能够在线使用的 Photoshop 免费永久工具…

命令模式 (Command Pattern)

定义 命令模式&#xff08;Command Pattern&#xff09;是一种行为型设计模式&#xff0c;它将一个请求封装为一个对象&#xff0c;从而允许用户使用不同的请求、队列或日志来参数化其他对象。命令模式也支持可撤销的操作。主要目的是将命令的发送者和接收者解耦&#xff0c;引…

【开发实践】网页预览excel表格原版样式

一、需求分析 由于业务部门需要&#xff0c;在导出excel表格页面&#xff0c;不需要先下载&#xff0c;就可以直接在页面上预览该表格文件。 二、代码实现 使用Luckysheet实现&#xff1a; 什么是Luckysheet Luckysheet &#xff0c;一款纯前端类似excel的在线表格&#xff0…

小程序如何进行一键修复

在使用小程序过程中&#xff0c;难免会遇到一些问题&#xff0c;比如程序崩溃、功能异常等等。这时&#xff0c;版本一键修复就显得尤为重要了。下面&#xff0c;我们就来介绍一下小程序如何进行版本一键修复。 一、什么是版本一键修复&#xff1f; 版本一键修复是指在小程序…

基于SSM的电商购物网站设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

Buzz库python代码示例

Buzz库来编写一个下载器程序。 php <?php require_once vendor/autoload.php; // 引入Buzz库 use Buzz\Browser; use Buzz\Message\Response; $browser new Browser(); // 设置 $browser->setHttpClient(new HttpClientProxy([ host > , port > , ])…

当TinyMCE富文本编辑器遇到Vue3+nuxt+ts项目,分享引入成功案例及过程中踩的那些坑

文章目录 前言遇到的坑插入上传图片插件上传图片请求与返回值处理本地文件引入报错解决源码 前言 如果你的前端项目技术栈使用的是Vue3nuxtts&#xff0c;并且老大让你集成一下那个传说中非常丝滑的TinyMCE富文本编辑器&#xff0c;那么恭喜你和我一样中大奖了。 网上找了好久…

C#鼠标穿透功能(WinForm)

C#鼠标穿透功能(WinForm) 在WinForm开发时&#xff0c;会用到这样一个场景&#xff0c;给屏幕增加水印Logo&#xff0c;但不影响画面的操作。这里就会用到鼠标穿透功能。 User32.Dll函数 要想实现鼠标穿透功能&#xff0c;需要用到User32.Dll的几个函数:SetWindowLong、GetW…

无人零售已成为新兴趋势

无人零售已成为新兴趋势 在新零售浪潮中&#xff0c;必然会涌现新的商业形态&#xff0c;而无人零售则是其中典型代表之一。传统零售受制于人力和场地等限制&#xff0c;消费者体验较差&#xff0c;如长时间排队、缓慢结账、距离过远等问题。而无人零售解决方案&#xff0c;包括…