爬虫网页解析

1、基于正则表达式的解析(全能的解析)

import re
pat = '构造正则表达式'
re.findall(pat, html)

更多相关正则表达式查询可以参考这个博客

2、基于 lxml 的 xpath 解析

from lxml import etree
1、
两种获取解析内容的途径
<1>
html = etree.HTML('爬取到的网页内容')
<2>
html = etree.parse('保存到本地的html路径')


2、
对获取内容进行解析

html.xpath('//a[@class = '***']')	#获取所有的 a(class为'***')标签下的信息
html.xpath('//a//@href')	#获取所有 a 标签下的所有的 href
html.xpath('//*/@class = '***'')	#获取所有含有 class = '***' 的标签(可以结合正则表达式去使用)
html.xpath('//a/span')	#获取所有 a 标签下的 span 标签的信息

3、基于 bs4 的 BeautifulSoup 解析

from bs4 import BeautifrlSoup

1、
获取解析html文本内容
<1>
soup = BeautifulSoup(html, 'lxml')
<2>
soup = BeautifrlSoup(open('html 路径'))


2、
对文本内容进行解析

soup.title('''标签名''')	#获取所有title标签(注意:这里的括号不是参数,只是 title 的解释)
soup.title.name		#获取标签的名字
soup.title.string	#获得title标签的文本内容(如果title里面是标签,则返回空)
soup.title.attrs	#获取title的所有属性(以字典形式返回)
soup.title.contents	#获取直接子标签	
soup.title.children	#获取直接子标签的生成器,通过for循环获取数据
soup.title.descenddants #获取所有子标签的生成器
soup.parent		#获取节点的上一级标签
soup.parents		#获取结点的上一级标签的生成器
soup.next_sibling	#返回下一平行节点的标签
soup.previous_sibling	#返回上一平行节点的标签
soup.next_siblings	#返回下一平行节点标签的生成器
soup.previous_siblings	#返回上一平行节点标签的生成器
soup.Attributes		#获取标签内非属性字符串
soup.NavigableString	#获取标签内字符串的注释部分
soup.body		#返回 body 标签
soup.head		#返回 head 标签
soup.prettify()		#为输出内容增加换行效果

soup.find() 		#搜索且只返回一个结果,同.find_all()参数
soup.find_parents() 	#在先辈节点中搜索,返回列表类型,同.find_all()参数
soup.find_parent() 	#在先辈节点中返回一个结果,同.find()参数
soup.find_next_siblings() 
			#在后续平行节点中搜索,返回列表类型,同.find_all()参数
soup.find_next_sibling() 
			#在后续平行节点中返回一个结果,同.find()参数
soup.find_previous_siblings() 
			#在前序平行节点中搜索,返回列表类型,同.find_all()
soup.find_previous_sibling() 
			#在前序平行节点中返回一个结果,同.find()参数

soup.find_all('td')	#查找所有的td标签
soup.find_all(id = 'link')	#查找所有ID为link的标签
soup.find_all(re.compile(pat))	#利用正则表达式查找标签

soup.select('a('''标签名''')')	#找到所有标签名为a的标签
soup.select('.link')		#找到所有的类名为link的标签
soup.select('#link')		#获取所有ID为link的标签
soup.select('title #link')	#找到title标签内所有ID为link的标签
soup.select('a[href = '***']')	#找到所有href = '***'的a标签
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值