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

  • 前言
  • 一、BeautifulSoup之find用法
    • find
    • find_all
    • 具体使用示例
  • 二、网页信息存储
    • 1.基础知识
    • 2.写入数据
  • 感谢

前言

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


一、BeautifulSoup之find用法

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

find

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

find(name, attrs, recursive, text, **wargs) 

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

find_all

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

find_all(name, attrs, recursive, text, limit, **kwargs)

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

find_all('span',limit=2)#获取span元素 但是只爬取两次

具体使用示例

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样式进行搜索,就像上一章讲到的提取简介。

find('span',class_="absolute")

二、网页信息存储

1.基础知识

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

打开文件

f = open("test.txt",'r')#两个参数 一个为文件名(带后缀)一个为模式

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

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

文件相关操作

import os#文件相关操作os模块
import os
#重命名文件
os.rename("A","B") #重命名 把文件A名字改为B#删除文件
os.remove("A") #把名字为A的文件删除#创建文件夹
os.mkdir("name")#创建一个名字为name的文件夹#获取当前目录
os.getcwd()#改变默认目录
os.chdir("path")#把默认路径改为path 如../

2.写入数据

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

import requests #导入requests包
from bs4 import BeautifulSoupurl="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的文件 在运行后打开代码可以看见简介已经被写入


感谢

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

四、网页信息存储和 BeautifulSoup之find用法相关推荐

  1. 硬核来袭!!!一篇文章教你入门Python爬虫网页解析神器——BeautifulSoup详细讲解

    文章目录 一.BeautifulSoup介绍 二.安装 三.bs4数据解析的原理 四.bs4 常用的方法和属性 1.BeautifulSoup构建 1.1 通过字符串构建 1.2 从文件加载 2.Be ...

  2. python 打开网页开发者工具_Python获取网页指定内容(BeautifulSoup工具的使用方法)...

    page = urllib2.urlopen(url) contents = page.read() #获得了整个网页的内容也就是源代码 print(contents) url代表网址,content ...

  3. Python中BeautifulSoup库的用法

    BeautifulSoup简介 Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释如下: Beautiful Soup提供一些简单的.python式的函数用来处 ...

  4. 速学bs4.BeautifulSoup()结构及用法

    bs4 官方文档 BeautifulSoup4被移植到bs4中,就是说使用时需要from bs4 import BeautifulSoup Beautiful Soup 4.2.0 中文文档 HTML ...

  5. 网页解析之BeautifulSoup

    介绍及安装 Beautiful Soup 是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 数据. BeautifulSoup 用来解析 HTML 比较简单,API非常人 ...

  6. 【机器学习基础】前置知识(四):一文掌握Pandas用法

    Pandas提供快速,灵活和富于表现力的数据结构,是强大的数据分析Python库. 本文收录于机器学习前置教程系列. 一.Series和DataFrame Pandas建立在NumPy之上,更多Num ...

  7. stm32+lwip(四):网页服务器测试

    ST官方有lwip的例程,下载地址如下: https://www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-s ...

  8. python写爬虫之提取网页的内容(筛选)_Python网络爬虫项目:使用requests获取网页,通过BeautifulSoup提取数据...

    本次讲解通过requests获取某一个网站,网址:http://www.gxccedu.com/sp2017/zli/index.html 然后使用正则表达式提取页面中的"专利名称" ...

  9. html网页动态显示效果,html的table用法(让网页的视觉效果显示出来)

    我们知道在网易博客可以用html时,是否把代码直接加入到摸板中,但是效果却不是很好.那是因为没有对代码进行很好的排列,现在我说一下用table来排列,可以很好的把特效显示出来. 在html语法中tab ...

最新文章

  1. nyquist图怎么画matlab,用MATLAB绘制Nyquist图
  2. opengl开启垂直同步_你的下一部鼠标,何必是鼠标?来试试肯辛通垂直无线轨迹球?...
  3. Spring Boot 配置文件的加载优先级
  4. JS里的居民们7-对象和数组转换
  5. tensorflow运行环境linux,在ubuntu或者min运行环境下安装gpu版本的tensorflow
  6. Cookie的生命周期问题
  7. MySQL的索引特性
  8. 自己做的一个登录页面,纯代码!
  9. IOC操作Bean管理注解方式(完全注解开发)
  10. mysql查字段的备注_Mysql 查看表注释或字段注释
  11. java中long的包装类_Java中基本数据的包装类
  12. 新浪自媒体重新开放注册   一点资讯全面布局?
  13. HTML Text Editor
  14. PC批量转换网易ncm音乐
  15. JDK的安装及环境变量配置
  16. 关于华为手机使用MTK刷机时出现failed to get PMT info的解决办法
  17. 路由器显示未连接网络连接到服务器ip,无线网络连接没有有效的ip配置怎么办?...
  18. 定性数据分析中高维列联表分析流程(附R代码)
  19. 雾霾天气下运动目标检测技术MATLAB
  20. LintCode168.吹气球

热门文章

  1. 开放 · 共生 | FISCO BCOS开源三周年庆典邀你相聚
  2. 如何向面试官提出优质的问题?
  3. SLAM | 视觉SLAM中的后端:后端优化算法与建图模板
  4. redis关闭保护模式
  5. 谷歌搜索引擎优化初学者指南pdf下载
  6. C++类中const函数与非const函数的调用规则
  7. 市场波诡云谲、技术变革在即,智能科技巨头如何战胜焦虑?
  8. Viso制作计算累加求和流程图
  9. ros_control控制真实电机的方法
  10. STM32学习笔记:通用定时器输出PWM