前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >四、网页信息存储和 BeautifulSoup之find用法

四、网页信息存储和 BeautifulSoup之find用法

作者头像
全栈程序员站长
发布2022-09-27 16:01:04
4500
发布2022-09-27 16:01:04
举报
文章被收录于专栏:全栈程序员必看

网页信息存储和 BeautifulSoup之find用法


前言

在这一章会解决上一章结尾问题BeautifulSoup之find用法,并进入爬虫的第三个流程,信息存储。


一、BeautifulSoup之find用法

BeautifulSoup有find 和find_all的方法。但在使用之前一定要先建立一个beautifulsoup对象。

find

只返回第一个匹配到的对象 语法:

代码语言:javascript
复制
find(name, attrs, recursive, text, **wargs) 

name–查找标签 text–查找文本 attrs–基于attrs参数

find_all

返回所有匹配到的结果,区别于find(find只返回查找到的第一个结果) 语法:

代码语言:javascript
复制
find_all(name, attrs, recursive, text, limit, **kwargs)

limit–限制 可以根据limit选择爬取的次数

代码语言:javascript
复制
find_all('span',limit=2)#获取span元素 但是只爬取两次

具体使用示例

代码语言:javascript
复制
soup.find_all("title")#找到所有title
soup.find_all("p", "title")#找到所有<p>内的title
soup.find_all("a")
soup.find_all("span")
soup.find_all(id="content")#找到id为content的
soup.find_all(id=True)    # 无论id是什么都可以

也可以通过css样式进行搜索,就像上一章讲到的提取简介。

代码语言:javascript
复制
find('span',class_="absolute")

二、网页信息存储

1.基础知识

在学习存储网页信息之前需要读者先学习python文件操作,如果没学过也没关系, 在这里我会讲解一些基础操作。已经学习过的读者可以跳过

打开文件

代码语言:javascript
复制
f = open("test.txt",'r')#两个参数 一个为文件名(带后缀)一个为模式

#r 为只读 以只读模式打开test 如果test.txt不存在则报错

代码语言:javascript
复制
f.read(n) #一次读n个字符 如果没有传入n则读所有数据
f.readlines(n) #一次读一行如果没有传入n则一行一行把文件读完

访问模式

说明

r

Read 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。

w

Write打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在创建新文件。

a

Add打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

rb

Read bin以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。

wb

Write bin以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

ab

Add bin以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

r+

Read+Write打开一个文件用于读写。文件指针将会放在文件的开头。

w+

Write + Read打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

a+

Add+打开一个文件用于读写,如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果改文件不存在,创建新文件用于读写。

rb+

以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头

wb+

以二进制格式打开一个文件用于读写。如果改文件已存在则会覆盖。如果改文件不存在,创建新文件。

ab+

以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果改文件不存在,创建新文件用于读写。

文件相关操作

代码语言:javascript
复制
import os#文件相关操作os模块
代码语言:javascript
复制
import os
#重命名文件
os.rename("A","B") #重命名 把文件A名字改为B

#删除文件
os.remove("A") #把名字为A的文件删除

#创建文件夹
os.mkdir("name")#创建一个名字为name的文件夹

#获取当前目录
os.getcwd()

#改变默认目录
os.chdir("path")#把默认路径改为path 如../

2.写入数据

这里还以第三章代码为例但是这次不仅打印结果而且存储结果

代码语言:javascript
复制
import requests #导入requests包
from bs4 import BeautifulSoup

url="https://www.bilibili.com/bangumi/play/ss22088/?from=search&seid=503303968644820581"#把bilibil的网址复制过来
req=requests.get(url)
req.encoding='utf-8'
soup=BeautifulSoup(req.text,'lxml')#使用BeautifulSoup的lxml解析网页
description=soup.find('span',class_="absolute").text.strip()
print(description)

t=open('spider_note.txt','w')#打开文件名为spider_note.txt的文件
#因为是以可写方式打开的,如果文件不存在则创建一个,不报错。

t.write(description)#写入
t.close()#关闭

这样大家就可以看见与这个文件同一目录下多了一个名为spider_note.txt的文件 在运行后打开代码可以看见简介已经被写入


感谢

如有不周还望指正。 部分资料来源于书籍或者网络 在此表达由衷的感谢

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/184405.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 网页信息存储和 BeautifulSoup之find用法
  • 前言
  • 一、BeautifulSoup之find用法
    • find
      • find_all
        • 具体使用示例
        • 二、网页信息存储
          • 1.基础知识
            • 2.写入数据
            • 感谢
            相关产品与服务
            对象存储
            对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档