亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Python爬蟲基礎學習,從一個小案例來學習xpath匹配方法

標簽:
Python

学习目的是为了实践,而实践又可以加深我们的学习效率,今天给大家带来了lxml库的xpath匹配方法的实例!教程大家网上搜索有很多,我们只看实用功能,当然,如果您已经很熟练了,可以跳过不看的!

640

开始前准备

版本:python3.6

工具:pycharm、lxml库(pip安装即可)

内容:新浪新闻搜索关键字抓取相关信息并保存本地txt文档

思路

我们先打开网页url,看下它的页面数据是怎么加载的

640

搜索世界杯,然后在开发者工具中先抓包看看是否为json数据,结果发现并没有,那么直接打开源代码看看呢

640

源代码往下翻,到1200行左右看内容,眼熟不?所有的新闻都在源代码中存在,那么就简单了!直接可以抓取相关内容

开始写代码吧

先介绍一下xpath的语法,其实各种教程都有写,我们只需要记住几点

它解析网页源代码的语法为etree.HTML(html)#html为网页源代码的文本形式

它的匹配方式为data.xpath('//a[@class=***]/text()')#data为上步解析后的源码或者指定源码

它匹配出来的结果为列表

尽量不要用开发者工具提供的复制xpath路径功能,因为它对于后期维护或者修改你的代码很不友好

ok,不啰嗦了,直接上代码了

640

python直播学习群542110741

可以看到几行代码直接获取了所有新闻的标题,简单说一下那几行代码

1、url,有人可能已经注意到了,我在代码中用的url和网页实际的有些不同,那是因为url中?后面的内容,如果&后面的参数没有结果的话,是可以省略的,还有可以省略的就是类似时间戳等等,大家可以尝试下!

2、html = requests.get(url)常规的获取网页源代码,用的是requests库,因为这个网站没有反爬,所以很容易就取到了

3、data = etree.HTML(html.text)这里就是上文所说,解析源码的语法,而且lxml解析源码还一个好处就是,如果源码中存在非闭合的标签或者不是很规范的标签,它会自动补全,非常实用!

4、重点来了:infos = data.xpath('//div[@class="r-info r-info2"]/h2/a')这行代码是获取源代码中带有"r-info r-info2"值的class属性,并且它在div标签中,然后在标签内容中查找h2标签及h2标签下的a标签,我们来看看网页中的位置

640

这里需要注意的是,尽量选择用class属性去定位是比较好的,因为它的属性一般都是功能唯一的,比较方便!大家可以先复制属性值然后去源代码中搜索,如果唯一或者所在的标签全部是需要的内容,那么就可以使用,如果不是,请往上级查找!

5、因为刚才定位到的标签是列表形式,所以用for循环来遍历取出,这里重点讲解下string(.)的用法:

上面的标签内容是非常方便的,标题就在a标签下的文本中,但是依然存在一种情况,比如标题中含有我们是搜索的关键字的时候,它就不是只存在a标签下了,比如下图

640

短短一行,存在2个标签,a和a标签下的span标签,那么这种情况下,我们就需要使用string(.)来匹配了,它的主要功能是取出所属标签下所有文本内容!所以我们的语法就成了info.xpath('string(.)',然后用print显示就达到了效果!

好了,语法大概说到这,我们将所有的标题和url、简介全部抓取下来,然后写到txt文档,篇幅有限就抓5页的内容吧!

640

ok,内容全部写到文件了,当然了,还可以继续往下写,比如进入每一个新闻页面,抓取所有文本内容,也是一样的写法,大家有兴趣的可以自行完善哦!

最后

推荐一个我个人的学习方法,那就是多看多听多练!多看看大神的教程、博客、经验总结等等,多听听大神的思路分析,最重要的是多练,代码一定要多写!代码一定要多写!代码一定要多写!这样才能更快的学习进步!!大家加油



作者:云飞学编程
链接:https://www.jianshu.com/p/8479121f472f

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消