@

前言

本章同样是解析网页,不过使用的解析技术为XPath。

相对于之前的BeautifulSoup,我感觉还行,也是一个比较常用的一种解析方式



并且更加的符合我们之前的一个逻辑思维,不过看情况吧,看各位准备怎么用吧。

XPath的使用方法

同样的先下载lxml插件,并且导入里面的etree

  1. """
  2. XPath的学习
  3. """
  4. from lxml import etree
  5. # 案例文件
  6. html_doc = """
  7. <div>
  8. <ul>
  9. <li class="item-0"><a href="www.baidu.com">baidu</a>
  10. <li class="item-1 one" name="first"><a href="https://blog.csdn.net/qq_25343557">myblog</a>
  11. <li class="item-1 two" name="first"><a href="https://blog.csdn.net/qq_25343557">myblog2</a>
  12. <li class="item-2"><a href="https://www.csdn.net/">csdn</a>
  13. <li class="item-3"><a href="https://hao.360.cn/?a1004">bbb</a>
  14. <li class="aaa"><a href="https://hao.360.cn/?a1004">aaa</a>
  15. """
  16. html = etree.HTML(html_doc)
  17. # 1、获取所有li下的所有a标签
  18. print(html.xpath("//li/a"))
  19. #2、获取指定的li标签item-0
  20. print(html.xpath("//li[@class='item-0']"))
  21. #3、获取指定的li标签item-0下面的a标签
  22. print(html.xpath("//li[@class='item-0']/a"))
  23. #4、获取指定的li标签item-0下面的a标签里面的内容
  24. print(html.xpath("//li[@class='item-0']/a/text()"))
  25. # 高级进阶用法
  26. # 1、匹配属性以什么类型开头的class(starts-with())
  27. print(html.xpath("//li[starts-with(@class,'item-')]"))
  28. # 2、匹配里面所有相同的item-1,(contains())
  29. print(html.xpath("//li[contains(@class,'item-1')]"))
  30. # 3、多属性的匹配(and)
  31. print(html.xpath("//li[contains(@class,'one') and contains(@name,'first')]/a/text()"))
  32. # 4、按顺序来排序
  33. # 第2个
  34. print(html.xpath("//li[2]/a/text()"))
  35. # 最后一个
  36. print(html.xpath("//li[last()]/a/text()"))
  37. # 最后一个-1个
  38. print(html.xpath("//li[last()-1]/a/text()"))
  39. # 小于等于3的序号li
  40. print(html.xpath("//li[position()<=3]/a/text()"))

XPath爬取数据

  1. """
  2. 案例:爬取《51job》相关职位信息,并保存成cvs文件格式
  3. """
  4. import requests
  5. from lxml import etree
  6. import csv
  7. import time
  8. headers = {
  9. "User-Agent": "Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.14"
  10. }
  11. f = open("Python职位.csv", "w", newline="")
  12. writer = csv.writer(f)
  13. writer.writerow(['编号', '职位名称', '公司名称', '薪资', '地址', '发布时间'])
  14. i = 1
  15. for page in range(1, 159):
  16. response = requests.get(f"https://search.51job.com/list/020000,000000,0000,00,9,99,python,2,{page}.html?lang=c&stype=&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&providesalary=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=&dibiaoid=0&address=&line=&specialarea=00&from=&welfare=", headers=headers)
  17. response.encoding = "gbk"
  18. if response.status_code == 200:
  19. html = etree.HTML(response.text)
  20. els = html.xpath("//div[@class='el']")[4:]
  21. for el in els:
  22. jobname = str(el.xpath("p[contains(@class,'t1')]/span/a/@title")).strip("[']")
  23. jobcom = str(el.xpath("span[@class='t2']/a/@title")).strip("[']")
  24. jobaddress = str(el.xpath("span[@class='t3']/text()")).strip("[']")
  25. jobmoney = str(el.xpath("span[@class='t4']/text()")).strip("[']")
  26. jobdate = str(el.xpath("span[@class='t5']/text()")).strip("[']")
  27. writer.writerow([i, jobname, jobcom, jobaddress, jobmoney, jobdate])
  28. i +=1
  29. print(f"第{page}页获取完毕")

后言

多学一种解析网页的方式多一种选择

python网络爬虫之解析网页的XPath(爬取Path职位信息)[三]的更多相关文章

  1. python网络爬虫之解析网页的BeautifulSoup(爬取电影图片)[三]

    目录 前言 一.BeautifulSoup的基本语法 二.爬取网页图片 扩展学习 后记 前言 本章同样是解析一个网页的结构信息 在上章内容中(python网络爬虫之解析网页的正则表达式(爬取4k动漫图 ...

  2. python网络爬虫之解析网页的正则表达式(爬取4k动漫图片)[三]

    前言 hello,大家好 本章可是一个重中之重,因为我们今天是要爬取一个图片而不是一个网页或是一个json 所以我们也就不用用到selenium模块了,当然有兴趣的同学也一样可以使用selenium去 ...

  3. 爬虫系列2:Requests+Xpath 爬取租房网站信息

    Requests+Xpath 爬取租房网站信息 [抓取]:参考前文 爬虫系列1:https://www.cnblogs.com/yizhiamumu/p/9451093.html [分页]:参考前文 ...

  4. Python 网络爬虫 007 (编程) 通过网站地图爬取目标站点的所有网页

    通过网站地图爬取目标站点的所有网页 使用的系统:Windows 10 64位 Python 语言版本:Python 2.7.10 V 使用的编程 Python 的集成开发环境:PyCharm 2016 ...

  5. (转)Python网络爬虫实战:世纪佳缘爬取近6万条数据

    又是一年双十一了,不知道从什么时候开始,双十一从“光棍节”变成了“双十一购物狂欢节”,最后一个属于单身狗的节日也成功被攻陷,成为了情侣们送礼物秀恩爱的节日. 翻着安静到死寂的聊天列表,我忽然惊醒,不行 ...

  6. 爬虫系列3:Requests+Xpath 爬取租房网站信息并保存本地

    数据保存本地 [抓取]:参考前文 爬虫系列1:https://www.cnblogs.com/yizhiamumu/p/9451093.html [分页]:参考前文 爬虫系列2:https://www ...

  7. 爬虫系列4:Requests+Xpath 爬取动态数据

    爬虫系列4:Requests+Xpath 爬取动态数据 [抓取]:参考前文 爬虫系列1:https://www.cnblogs.com/yizhiamumu/p/9451093.html [分页]:参 ...

  8. 【图文详解】scrapy爬虫与动态页面——爬取拉勾网职位信息(2)

    上次挖了一个坑,今天终于填上了,还记得之前我们做的拉勾爬虫吗?那时我们实现了一页的爬取,今天让我们再接再厉,实现多页爬取,顺便实现职位和公司的关键词搜索功能. 之前的内容就不再介绍了,不熟悉的请一定要 ...

  9. Python开发爬虫之BeautifulSoup解析网页篇:爬取安居客网站上北京二手房数据

    目标:爬取安居客网站上前10页北京二手房的数据,包括二手房源的名称.价格.几室几厅.大小.建造年份.联系人.地址.标签等. 网址为:https://beijing.anjuke.com/sale/ B ...

随机推荐

  1. c#解析json字符串处理

    本文链接:https://blog.csdn.net/sajiazaici/article/details/77647625本文是全网第二简单的方法,因为我女票也发了一篇博客说是全网最简单的方法,我不 ...

  2. 状态压缩DP入门题

    . /*本题为状态压缩题 题目大意 : 一个矩阵里有很多格子,每个格子有两种状态,可以放牧和不可以放牧, 可以放牧用1表示,否则用0表示,在这块牧场放牛,要求两个相邻的方 格不能同时放牛(不包括斜着的 ...

  3. 【Markdown】新手快速入门基础教程

    Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档.当前许多网站都广泛使用 Markdown 来撰写帮助文档或是用于论坛上发表消息.例如:GitHub.简书.reddi ...

  4. [HDU5382]GCD?LCM!

    Description HDU5382 会吗?不会! 设\(F(n)=\sum\limits_{i = 1}^{n}\sum\limits_{j=1}^{n}[lcm(i,j)+gcd(i,j)\ge ...

  5. tomcat、nginx、apache、tengine都是什么,及其作用

      Tomcat的功能职责:Tomcat运行在JVM之上,它和HTTP服务器一样,绑定IP地址并监听TCP端口,同时还包含以下指责: • 管理Servlet程序的生命周期• 将URL映射到指定的Ser ...

  6. git 提交的时候 建立排除文件夹或者文件

    1.在Git的根仓库下 touch .gitignore 2.编辑这个文件

  7. 在页面跳转的时候,在跳转后的页面中使用js 获取到 页面跳转的url中携带的参数。

    common.js代码 //获取URL中的参数..等等function getQueryString(name){var reg = new RegExp("(^|&)"+ ...

  8. JarvisOJ - Writeup(5.31更新)

    此篇用来记录我在jarivsOJ上的一些题解,只给解题思路,不放flag Misc 0x01 You Need Python(300) 题目有两个文件,一个py文件,另一个是经过编码的key 文件ke ...

  9. c#项目使用webrtc的降噪模块方法

    分离webrtc的降噪(Noise Suppression)部分 webrtc是Google开源的优秀音视频处理及传输代码库,其中包含了audio processing.video processin ...

  10. Linux05——用户操作

    用户操作 1.新增用户(useradd 新用户名): 2.设置密码(passwd 用户名): 3.用户是否存在(id  用户名): 4.切换用户(su - 切换用户名) **—— **       s ...