前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据解析-xpath

数据解析-xpath

作者头像
y191024
发布2022-09-20 19:03:35
4230
发布2022-09-20 19:03:35
举报
文章被收录于专栏:睡不着所以学编程

学习了正则和bs4,到了xpath,xpath是这三个里面最重要的(我也不知道为啥,视频里的老师说的!)xpath是最常用且最高效便捷的一种解析方式。

学习完了xpath后开始总结:

xpath解析原理:

1.实例化一个etree对象,且需要将被解析的页面源码数据加载到该对象中

2.调用etree对象中的xpath方法结合着xpath表达式实现标签的定位和内容的捕获。

环境的安装也很简单,在终端输入pip install lxml,在使用时输入from lxml import etree.

然后在使用的时候实例化一个对象即可。

为了防止由html格式不规范而导致的乱码,按照下面的方法来写。

parser = etree.HTMLParser(encoding='utf-8')

r = etree.parse('xxx.html', parser=parser)

基本就这些,然后做一个实战,需求是爬取58同城上的第一页中所有二手房的名称。

代码语言:javascript
复制
import requests
from lxml import etree

if __name__ == '__main__':
    url = "https://wx.58.com/ershoufang/?utm_source=market"
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:87.0) Gecko/20100101 Firefox/87.0"
    }
    page_text = requests.get(url=url, headers=headers).text
    # 在本地创建一个html的文件,将页面数据写入
    with open("58.html", "w", encoding="utf-8") as fp:
        fp.write(page_text)
        # 创建实例
        parser = etree.HTMLParser(encoding="utf-8")
        tree = etree.parse("58.html", parser=parser)
        # 每一个商品详细信息都在一个section标签下,逐个遍历
        for house in tree.xpath("//section[@class='list']"):
            # 再定位到每个section下的房源名称,将文本打印出来
            titles = house.xpath("//div[@class='property-content-title']/h3/@title")
            for title in titles:
                print(title)

结果展示:

关于属性定位和标签定位的知识点放在后面的总结中。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 睡不着所以学编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档