绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
Python简单网页 标签抓取
2019-10-17 13:37:02

萧萧python教学


1 环境

Windows7 x64

Python 3.7

2 流程

i) 配置相关库

ii) 爬取网页源代码信息

iii) 用函数爬取特定标签里不同参数的文字

3 代码

3.1 配置相关库(request和BS4)

输入

from urllib.request import urlopen #获取用以请求打开网页的库

from bs4 import BeautifulSoup #获取解析网页的库

输出

导入爬虫相关库

3.2 爬取网页源代码

输入

html=urlopen("http://www.pythonscraping.com/pages/warandpeace.html") #获取html结构与内容

bs0bj=BeautifulSoup(html) #提取name信息

输出

抓取特定网页www.pythonscraping.com/pages/warandpeace.html的结构与内容

BeautifulSoup从网页源代码中爬取name信息

备注

name 属性用于对提交到服务器端的表单数据进行标识,或者在客户端通过 JavaScript 引用表单数据。

只有设置了 name 属性的表单元素,才能在提交表单时传递它们的值。

3.3 爬取特定标签里不同参数的文字

BeautifulSoup里的find()和findAll()函数,可通过标签的不同属性,查找需要的标签组或单个

标签

3.3.1 文本参数text

输入

nameList=bs0bj.findAll(text="the prince") #查找网页中包含"the prince"内容的标签

print(len(nameList)) #统计字符"the prince"出现次数

输出

查找并打印网页中包含"the prince"内容的标签

统计字符"the prince"出现次数

备注

text使用标签的文本内容去匹配,而不是用标签属性

len()函数返回字符串长度或项目个数(变量内含多个项目/元素时)

3.3.2 关键词参数keyword

输入

allText = bs0bj.findAll(id="text") #关键词参数keyword,可选择具有指定属性的标签

print(allText[0].get_text())

输出

打印网页所有text文本内容

备注

关键词参数keyword可以选择具有指定属性的标签

3.3.3 标签参数tag

输入

tagList=bs0bj.findAll({"h1","h2"})#返回一个包含HTML文档h1标题标签的列表

print(tagList[0].get_text())

输出

返回一个包含HTML文档中h1、h2标题标签的列表

备注

标签参数tag可以传一个或多个标签名称组成的Python列表做标签参数

3.3.4 属性参数attributes

输入

nameList=bs0bj.findAll("span",{"class":"green"}) #提取所有span标签下的绿色文字内容

for name in nameList: #注意for的用法:遍历列表所有名字

print(name.get_text()) #清除标签信息,打印人物名称列表

输出

用bs0bj.findAll(tagName, tagAttributes)抽取只包含在<span class="green">

</span>span>标签里的文字,得到war and peace人物名称列表

备注

bs0bj.tagName只能获取页面中个指定标签,而bs0bj.findAll(tagName,

tagAttributes)获取页面中所有指定标签

name.get_text()会把HTML文档中所有标签、超链接、段落清除,返回一串不带标签的

文字,所以通常后打印、存储、操作数据时才使用。一般情况下应保留HTML文档的标

签结构,便于BeautifulSoup对象查找。

注意for的用法:遍历列表所有名字

4 全文

代码全文如下:

###############################################################################

# Crawler

# Author: Lenox

# Data:2019.09.30

# License: BSD 3.0

###############################################################################

# 配置相关库

from urllib.request import urlopen #获取请求打开网页的库

from bs4 import BeautifulSoup #获取解析网页的库

# 爬取网页源代码信息

html=urlopen("http://www.pythonscraping.com/pages/warandpeace.html")#获取html结构与内容

bs0bj=BeautifulSoup(html)

# 爬取特定标签里不同参数的文字

# 文本参数text

nameList=bs0bj.findAll(text="the prince")#查找网页中包含"the prince"内容的标签

print(len(nameList)) #统计字符"the prince"出现次数

# 关键词参数keyword

allText = bs0bj.findAll(id="text")#关键词参数keyword,可选择具有指定属性的标签

print(allText[0].get_text())

# 标签参数tag

tagList=bs0bj.findAll({"h1","h2"})#返回一个包含HTML文档h1标题标签的列表

print(tagList[0].get_text())

# 属性参数attributes

nameList=bs0bj.findAll("span",{"class":"green"})#提取所有span标签下的绿色文字内容

for name in nameList: #注意for的用法,遍历列表所有名字

print(name.get_text()) #清除标签信息,打印人物名称列表

以上就是小编分享的所有内容。


分享好友

分享这个小栈给你的朋友们,一起进步吧。

应用开发
创建时间:2020-06-17 15:31:04
应用软件开发是指使用程序语言C#、java、 c++、vb等语言编写,主要是用于商业、生活应用的软件的开发。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 栈栈
    专家
戳我,来吐槽~