一个Python爬虫案例,带你掌握xpath数据解析方法!转载

原创
小哥 3年前 (2022-10-14) 阅读数 54 #大杂烩

文章目录

  • xpath基本概念

  • xpath解析原理

  • 环境安装

  • 如何实例化一个etree对象:

  • xpath(‘xpath表达式’)

  • xpath爬取58二手房的例子的例子二手属性的例子的第二故乡二手房屋的例子

  • 爬取网址

  • 完整代码

  • 效果图

  • xpath服务交互。

  • 爬取网址

  • 完整代码

  • 效果图

  • xpath爬行国民城市名字的例子爬行国民城市银行的名字

  • 爬取网址

  • 完整代码

  • 效果图

  • xpath爬一个简历模板爬行的简历模板的例子爬行的简历模板的例子

  • 爬取网址

  • 完整代码

  • 效果图

xpath基本概念

xpath解析:最常用且最便捷高效的一种解析方式。通用性强。

xpath解析原理

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

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

环境安装

pip install lxml

如何实例化一个etree对象:

from lxml import etree

1.将本地的html文件中的远吗数据加载到etree对象中:

etree.parse(filePath)

2.可以将从互联网上获取的原码数据加载到该对象中:

etree.HTML(‘page_text’)

xpath(‘xpath表达式’)

  • /:表示从根节点定位。

  • //:显示多个水平。

  • 资源可以用各种方式表示,最常见的是//div[@class=song] tag[@attrName=attrValue]

  • 索引定位。//div[@class=song]/p[3] 索引从1开始的

  • 取文本:

    • /text()获取文本内容的直线标记

    • //text()以下优点和限制适用。

  • 取属性:/@attrName ==>img/src

xpath爬取58二手房的例子的例子二手属性的例子的第二故乡二手房屋的例子

爬取网址

https://xa.58.com/ershoufang/完整代码

from lxml import etree
import requests

if __name__ == __main__:
    headers = {
        User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36
    }
    url = https://xa.58.com/ershoufang/
    page_text = requests.get(url=url,headers=headers).text
    tree = etree.HTML(page_text)
    div_list = tree.xpath(//section[@class="list"]/div)
    fp = open(./58它允许集成应用程序允许它允许集成应用程序的应用程序的集成允许集成的应用程序.txt,w,encoding=utf-8)
    for div in div_list:
        title = div.xpath(.//div[@class="property-content-title"]/h3/text())[0]
        print(title)
        fp.write(title+

+ )

xpath服务交互。

爬取网址

https://pic.netbian.com/4kmeinv/完整代码

import requests,os
from lxml import etree

if __name__ == __main__:
    headers = {
        User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36
    }
    url = https://pic.netbian.com/4kmeinv/
    page_text = requests.get(url=url,headers=headers).text
    tree = etree.HTML(page_text)
    li_list = tree.xpath(//div[@class="slist"]/ul/li/a)
    if not os.path.exists(./piclibs):
        os.mkdir(./piclibs)
    for li in li_list:
        detail_url =https://pic.netbian.com + li.xpath(./img/@src)[0]
        detail_name = li.xpath(./img/@alt)[0]+.jpg
        detail_name = detail_name.encode(iso-8859-1).decode(GBK)
        detail_path = ./piclibs/ + detail_name
        detail_data = requests.get(url=detail_url, headers=headers).content
        with open(detail_path,wb) as fp:
            fp.write(detail_data)
            print(detail_name,seccess!!)

xpath爬行国民城市名字的例子爬行国民城市银行的名字

爬取网址

https://www.aqistudy.cn/historydata/完整代码

import requests
from lxml import etree

if __name__ == __main__:
    url = https://www.aqistudy.cn/historydata/
    headers = {
        User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36,
    }
    page_text = requests.get(url=url,headers=headers).content.decode(utf-8)
    tree = etree.HTML(page_text)
    #热门城市   //div[@class="bottom"]/ul/li
    #全部城市   //div[@class="bottom"]/ul/div[2]/li
    a_list = tree.xpath(//div[@class="bottom"]/ul/li | //div[@class="bottom"]/ul/div[2]/li)
    fp = open(./citys.txt,w,encoding=utf-8)
    i = 0
    for a in a_list:
        city_name = a.xpath(.//a/text())[0]
        fp.write(city_name+ )
        i=i+1
        if i == 6:
            i = 0
            fp.write(

)     print(爬取成功)

xpath爬一个简历模板爬行的简历模板的例子爬行的简历模板的例子

爬取网址

https://sc.chinaz.com/jianli/free.html完整代码

import requests,os
from lxml import etree

if __name__ == __main__:
    url = https://sc.chinaz.com/jianli/free.html
    headers = {
        User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36,
    }
    page_text = requests.get(url=url,headers=headers).content.decode(utf-8)
    tree = etree.HTML(page_text)
    a_list = tree.xpath(//div[@class="box col3 ws_block"]/a)
    if not os.path.exists(./简历模板):
        os.mkdir(./简历模板)
    for a in a_list:
        detail_url = https:+a.xpath(./@href)[0]
        detail_page_text = requests.get(url=detail_url,headers=headers).content.decode(utf-8)
        detail_tree = etree.HTML(detail_page_text)
        detail_a_list = detail_tree.xpath(//div[@class="clearfix mt20 downlist"]/ul/li[1]/a)
        for a in detail_a_list:
            download_name = detail_tree.xpath(//div[@class="ppt_tit clearfix"]/h1/text())[0]
            download_url = a.xpath(./@href)[0]
            download_data = requests.get(url=download_url,headers=headers).content
            download_path = ./简历模板/+download_name+.rar
            with open(download_path,wb) as fp:
                fp.write(download_data)
                print(download_name,success!!)


这是一个公共我开发了小型机器人,目前添加天气查询955公司列表,注意时间查询;

机器人公共数量已经在线,欢迎骚扰

推荐阅读:
入门: 最完整的从零开始的学习学习最完整最全面的从零开始的从零开始的学习最完整的从零开始的学习Python的问题  | 从头开始学习从零基础从零从零基础8个月的Python  | 实战项目 |学Python这是快捷键的快捷键的快捷方式
干货:爬行豆瓣简短评论,后来我们的电影” | 38年NBA分析分析最好的球员最好的球员最好的球员分析 |   包管理器安装包管理器安装3令人失望  | 已经创建了第一个到目前为止已经创建了第一个了 | 谜语的答案王的王灯笼谜题的答案谜语的王灯笼谜题的答案 |用Python让女士们示意图的海洋让小姐的草图的草图小姐做的女士草图 |拒付是如此的热,我使用机器学习做一个迷你电影推荐系统
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python每天很酷的游戏日常酷跑游戏日常冷却器游戏!
AI: 机器人使诗歌机器人使诗歌一个机器人,机器人可以使诗歌可以使诗歌 | 颜色图片给整幅彩色照片颜色图片 | 预测收入 | 拒付是如此的热,我使用机器学习做一个迷你电影推荐系统
小工具: Pdf转Word容易修复形式和水印! | 一键把html。pdf!|  再见PDF请求,说如果有人点击程序,然后他会 | 用90格式化的反应。PDF转换器,word、PPT、excel、markdown、html一键转换 | 让一个固定成本低机票提醒! |60它默认的削减方法和途径。

每年年度弹出文案弹出复制年度爆炸性的文案

  • 1). 卧槽!Pdf转Word用Python轻松搞定 !

  • 2).学Python维护工具)来创建、测试和管理维护工具)来创建、测试和管理100行代码做了一个网站,帮助人们行代码做一个网站帮助人们行代码做一个网站,帮助人们PS旅行照片,获得一个鸡腿吃旅游照片获得鸡腿吃旅游图片和获得一个鸡腿吃旅游照片获得一个鸡腿

  • 3).。

  • 4). 80行代码!Python做一个多尔是做是do-ler空想社会改良家A梦分身

  • 5).你必须掌握必须掌握你必须掌握20个python方法,我们定义一个列表,将开始与字典(

  • 6). 30个Python变态技能古怪的建议收集古怪的技能集

  • 7). 我总结的80页面“菜鸟学习“新秀研究页面“菜鸟学习页面“新手学习Python精选干货.pdf》,都是干货

  • 8). 再见Python!我要学Go了!2500深度分析词深入分析词深入分析 !

  • 9).发现一个舔狗的好处!Python履带工件自动下载的女孩照片太酷

点击阅读原文查看点击原文看点击原文点击阅读原文B忍受我的视频!

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门