python开发爬虫如何解析网页

北京中科医院亲身经历 https://baike.baidu.com/item/%E5%88%98%E4%BA%91%E6%B6%9B/21900249?fr=aladdin
前言

一个简单的爬虫程序主要分为两个部分,请求部分和解析部分。请求部分基本一行代码就可以搞定,所以主要来讲述一下解析部分。对于解析,最常用的就是xpath和css选择器,偶尔也会使用正则表达式。

不论是xpah还是css,都是通过html元素或者其中某些属性来选中符合条件的元素节点。

以斗罗大陆的部分html为例。

css选择器

很多学习过前端的小伙伴对css选择器比较熟悉,.是class选择器,#是id选择器。这里挑最几个常用的来讲一下,其他用法可百度。

常见语法

以上就是一些比较常用的css选择器。其中里面的元素a和span只用来举例,可以替换成任意的html元素,href属性也可以替换成元素的其他属性。

样例说明

还是用之前斗罗大陆的程序来说明一下。

soup.select()根据css规则选择元素,返回包含一个或多个元素的list。

因为html中class=”type_txt”的span元素有五个,所以返回了五个元素的列表。遍历列表,每个元素可以通过string属性,来输出元素中间的文本内容;每个元素通过attrs属性,可以获取标签的属性,返回一个字典。

小技巧

如果你要问,不会css选择器能不能写爬虫啊,我肯定不会回答我帮你写啊,我只能告诉你可以!!

复制的css选择器如下:

bodydiv:nth-child(3)div.site_container.container_detail_topdivdivdivdiv:nth-child(3)div:nth-child(1)span.type_txt

我们用这个测试一下:

虽然看起来比较长,但还是正确地选择到了span元素。

xpath

xpah全名XmlPathLanguage(xml路径语言),说实话,我没用过xpath,现学现卖。

如图是比较常见的xpath语法,我从参考文档、使用测试到整理成表格一共用了半个多小时。从节点选择路径来说,一般相对路径用的比较多。元素后面[]里面的内容就是if条件。

同时,css选择器无法选择元素的父元素,而xpath可以通过../来选择元素的父元素。

样例说明

查看这些变量的值:这些变量的类型也是list,也需要用下标或者遍历来取出里面的值。

小技巧

和css一样,不过选择的是CopyXpath。

复制的xpath:

/html/body/div[2]/div[1]/div/div/div/div[3]/div[1]/span[2]

测试结果:不过要注意的是,xpath一定要对起始点元素做好选择。上面三个不一样的xpath输出了同样的结果,起始点元素的选择决定了xpath的复杂度。




转载请注明:http://www.aierlanlan.com/tzrz/7240.html