我是靠谱客的博主 瘦瘦白开水,这篇文章主要介绍爬虫实践入门:解析网页,现在分享给大家,希望可以做个参考。

使用正则表达式解析网站
常见的正则字符和含义

模式描述
.匹配任意字符,除了换行符
*匹配前一个字符0次或多次
s匹配空白字符
+匹配前一个字符1次或多次
匹配前一个字符0次或1次
S匹配任何非空白字符
^匹配字符串开头
$匹配字符串末尾
()匹配括号内的表达式,也表示一个组
d匹配数字,等价于[0-9]
D匹配任何非数字,等价于[^0-9]
w匹配字母数字,等价于[A-Za-z0-9]
W匹配非字母数字,等价于[^A-Za-z0-9]
[]用来表示一组字符

接下来介绍的是:re.matchre.reachre.findall
re.match:从字符串起始位置匹配一个模式,如果从起始位置匹配不了,match就返回none.
re.match(pattern,string,flags=0)
pattern是正则表达式,包含一些特殊的字符,string为要匹配的字符串,flags用来控制正则表达式的匹配方式。
re.search扫描整个字符串并返回第一个成功的匹配
re.findall可以找到所有的匹配
使用BeautifulSoup解析网站
BeautifulSoup可以从HTML或XML文件中提取数据
主要的解析器及其优缺点:

解析器使用方法及优缺点
python标准库BeautifulSoup(Markup,“html.parser”)优势:python的内置标准库,执行速度适中;文档容错能力强; 劣势L:速度较慢
Lxml HTML解析器BeautifulSoup(markup,“xml”) 优势:速度款,文档容错能力强,bs4自带;无缺点
lxml XML解析器BeautifulSoup(markuo,[“lxml”,“xml”]) BeautifulSoup(markup,“xml”) 优势:速度快,唯一支持XML的解析器;无缺点
html5libBeautifulSoup(markup,“html5lib”) 优势:最好的容错性,以浏览器的方式解析文档,生成html5格式的文档;劣势:速度慢,不依赖外部扩展

使用BeautifulSoup获取博客标题(代码如下)

import requests
from bs4 import BeautifulSoup
link="http://www.sansostang.com/"
headers={
'User-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
}
r=requests.get(link,headers=headers)
soup=BeautifulSoup(r.text,"lxml")
first_title=soup.find("h1",class_="post-title").a.text.strip()
print("第一篇文章的标题:",first_title)
title_list=soup.find_all("h1",class_="post-title")
for i in range(len(title_list)):
    title=title_list[i].a.text.strip()
    print("第%s篇文章的标题是:%s"%(i+1,title))

使用lxml获取博客的标题

import requests
from lxml import etree
link="http://www.sansostang.com/"
headers={
'User-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
}
r=requests.get(link,headers=headers)
soup=etree.HTML(r.text)
title_list=html.xpath('//h1[[@class="post-title"]/a/text()')
print(title-list)

XPath路径表达式及其描述

表达式描述
nodename选取此节点的所有子节点
/从根节点选取
//从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置
.选取当前节点
··选取当前节点的父节点
@选取属性
路径表达式结果
bookstore选取bookstore元素的所有子节点
/bookstore选取根元素bookstore
bookstore/book选取属于bookstore子元素的所有book元素
//book选取所有book子元素,无论他在文档的什么位置
bookstore//book选择属于bookstore元素后代的所有book元素,无论它们位于bookstore下的什么位置
//@lang选取名为lang的所有属性

最后

以上就是瘦瘦白开水最近收集整理的关于爬虫实践入门:解析网页的全部内容,更多相关爬虫实践入门内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(94)

评论列表共有 0 条评论

立即
投稿
返回
顶部