HTML页面解析

一、正则表达式

1.引入re模块

import re

2.写正则表达式

obj = re.compile(r'<li>.*?<span class="title">(?P<name>.*?)'
                     r'</span>.*?<p class="">.*?<br>(?P<year>.*?)&nbsp;/&nbsp;'
                     r'(?P<place>.*?)&nbsp;.*?</p>', re.S)

(?P<分组名字>正则)

使用re.S参数以后,正则表达式会将这个字符串作为一个整体,将“\n”当做一个普通的字符加入到这个字符串中,在整体中进行匹配。

3.HTML页面解析  

result = obj.finditer(resp.text)    # 返回一个迭代器

result = obj.match(resp.text)    # 从字符串开头匹配

result = obj.search(resp.text)  # 返回第一个结果或者空

result = obj.findall(resp.text)  # 返回list

4.取组值

for it in result:
    print(it.group('name'))

二、BeautifulSoup

1.引入BeautifulSoup

import requests
from bs4 import BeautifulSoup    # 引入BeautifulSoup

find(标签,属性=值)

find_all(标签,属性=值)

2.bs4解析页面

# bs4解析页面
page = BeautifulSoup(resp.text, 'html.parser')
pageList = page.find_all('a', style="display: block;",target="_blank")
for i in pageList:
        print(i.get('href'))    # 获取标签中属性的值,.text来取标签标记的内容

三、xpath

1.引入etree

import requests
from lxml import etree    # 引入etree

2.使用xpath对HTML解析

html = etree.HTML(resp.text)
divs = html.xpath('//*[@id="utopia_widget_6"]/div/div[1]/div')

    for div in divs:
        price = div.xpath('./div[4]/span/text()')[0]

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值