1. 首页
  2. Python

Python爬虫基础学习,从一个小案例来学习xpath匹配方法

“u003Cdivu003Eu003Cpu003E学习目的是为了实践,而实践又可以加深我们的学习效率,今天给大家带来了lxml库的xpath匹配方法的实例!教程大家网上搜索有很多,我们只看实用功能,当然,如果您已经很熟练了,可以跳过不看的!u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F15293867617132c27c514c1″ img_width=”790″ img_height=”441″ alt=”Python爬虫基础学习,从一个小案例来学习xpath匹配方法” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Ch1u003Eu003Cstrongu003E开始前准备u003Cu002Fstrongu003Eu003Cu002Fh1u003Eu003Cpu003E版本:python3.6u003Cu002Fpu003Eu003Cpu003E工具:pycharm、lxml库(pip安装即可)u003Cu002Fpu003Eu003Cpu003E内容:新浪新闻搜索关键字抓取相关信息并保存本地txt文档u003Cu002Fpu003Eu003Ch1u003Eu003Cstrongu003E思路u003Cu002Fstrongu003Eu003Cu002Fh1u003Eu003Cpu003E我们先打开网页url,看下它的页面数据是怎么加载的u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F15293867616490ca2d86170″ img_width=”978″ img_height=”547″ alt=”Python爬虫基础学习,从一个小案例来学习xpath匹配方法” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E搜索世界杯,然后在开发者工具中先抓包看看是否为json数据,结果发现并没有,那么直接打开源代码看看呢u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F15293867617728d8365277b” img_width=”1258″ img_height=”651″ alt=”Python爬虫基础学习,从一个小案例来学习xpath匹配方法” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E源代码往下翻,到1200行左右看内容,眼熟不?所有的新闻都在源代码中存在,那么就简单了!直接可以抓取相关内容u003Cu002Fpu003Eu003Ch1u003Eu003Cstrongu003E开始写代码吧u003Cu002Fstrongu003Eu003Cu002Fh1u003Eu003Cpu003E先介绍一下xpath的语法,其实各种教程都有写,我们只需要记住几点u003Cu002Fpu003Eu003Culu003Eu003Cliu003E它解析网页源代码的语法为etree.HTML(html)#html为网页源代码的文本形式u003Cu002Fliu003Eu003Cliu003E它的匹配方式为data.xpath(‘u002Fu002Fa[@class=***]u002Ftext()’)#data为上步解析后的源码或者指定源码u003Cu002Fliu003Eu003Cliu003E它匹配出来的结果为列表u003Cu002Fliu003Eu003Cliu003E尽量不要用开发者工具提供的复制xpath路径功能,因为它对于后期维护或者修改你的代码很不友好u003Cu002Fliu003Eu003Cu002Fulu003Eu003Cpu003Eok,不啰嗦了,直接上代码了u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F1529386761769a3ff220233″ img_width=”1214″ img_height=”632″ alt=”Python爬虫基础学习,从一个小案例来学习xpath匹配方法” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E可以看到几行代码直接获取了所有新闻的标题,简单说一下那几行代码u003Cu002Fpu003Eu003Cpu003E1、url,有人可能已经注意到了,我在代码中用的url和网页实际的有些不同,那是因为url中?后面的内容,如果&后面的参数没有结果的话,是可以省略的,还有可以省略的就是类似时间戳等等,大家可以尝试下!u003Cu002Fpu003Eu003Cpu003E2、html = requests.get(url)常规的获取网页源代码,用的是requests库,因为这个网站没有反爬,所以很容易就取到了u003Cu002Fpu003Eu003Cpu003E3、data = etree.HTML(html.text)这里就是上文所说,解析源码的语法,而且lxml解析源码还一个好处就是,如果源码中存在非闭合的标签或者不是很规范的标签,它会自动补全,非常实用!u003Cu002Fpu003Eu003Cpu003E4、重点来了:infos = data.xpath(‘u002Fu002Fdiv[@class=”r-info r-info2″]u002Fh2u002Fa’)这行代码是获取源代码中带有”r-info r-info2″值的class属性,并且它在div标签中,然后在标签内容中查找h2标签及h2标签下的a标签,我们来看看网页中的位置u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F15293867617451952b5935a” img_width=”865″ img_height=”431″ alt=”Python爬虫基础学习,从一个小案例来学习xpath匹配方法” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E这里需要注意的是,尽量选择用class属性去定位是比较好的,因为它的属性一般都是功能唯一的,比较方便!大家可以先复制属性值然后去源代码中搜索,如果唯一或者所在的标签全部是需要的内容,那么就可以使用,如果不是,请往上级查找!u003Cu002Fpu003Eu003Cpu003E5、因为刚才定位到的标签是列表形式,所以用for循环来遍历取出,这里重点讲解下string(.)的用法:u003Cu002Fpu003Eu003Cpu003E上面的标签内容是非常方便的,标题就在a标签下的文本中,但是依然存在一种情况,比如标题中含有我们是搜索的关键字的时候,它就不是只存在a标签下了,比如下图u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F152938676164294a8f70231″ img_width=”872″ img_height=”343″ alt=”Python爬虫基础学习,从一个小案例来学习xpath匹配方法” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E短短一行,存在2个标签,a和a标签下的span标签,那么这种情况下,我们就需要使用string(.)来匹配了,它的主要功能是取出所属标签下所有文本内容!所以我们的语法就成了info.xpath(‘string(.)’,然后用print显示就达到了效果!u003Cu002Fpu003Eu003Cpu003E好了,语法大概说到这,我们将所有的标题和url、简介全部抓取下来,然后写到txt文档,篇幅有限就抓5页的内容吧!u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F1529386762149697b06654e” img_width=”1276″ img_height=”617″ alt=”Python爬虫基础学习,从一个小案例来学习xpath匹配方法” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eok,内容全部写到文件了,当然了,还可以继续往下写,比如进入每一个新闻页面,抓取所有文本内容,也是一样的写法,大家有兴趣的可以自行完善哦!u003Cu002Fpu003Eu003Ch1u003Eu003Cstrongu003E最后u003Cu002Fstrongu003Eu003Cu002Fh1u003Eu003Cpu003E推荐一个我个人的学习方法,那就是多看多听多练!多看看大神的教程、博客、经验总结等等,多听听大神的思路分析,最重要的是多练,代码一定要多写!代码一定要多写!代码一定要多写!这样才能更快的学习进步!!大家加油u003Cu002Fpu003Eu003Cu002Fdivu003E”

原文始发于:Python爬虫基础学习,从一个小案例来学习xpath匹配方法

主题测试文章,只做测试使用。发布者:敢吻,转转请注明出处:http://www.cxybcw.com/13286.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code