BeautifulSoup解析库select方法实例——获取企业信息

本文内容由浙江浦江中学方春林老师提供。

Requests 是用Python语言编写,基于urllib,采用Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求。Requests 的哲学是以PEP 20的习语为中心开发的,所以它比urllib更加Pythonic。更重要的一点是它支持 Python3 哦!

1、requests简单用法

2、解析HTML库——BeautifulSoup简介

使用requests获取的是HTML页面,在HTML中除了html标记如<title>,<p>外,还有很多 CSS代码。可以使用BeautifulSoup库解析HTML,利用BeautifulSoup对象的select方法可以筛选出css标记的内容。有如下几种方法获取内容: ①通过标签名查找 ②通过类名查找 ③通过id名查找 ④组合查找。组合查找即和写 class 文件时,标签名与类名、id名进行的组合原理是一样的,例如查找p标签中,id等于link1的内容,二者不要用空格分开。 ⑤属性查找。查找时还可以加入属性元素,属性需要用中括号括起来,注意属性和标签属于同一节点,所以中间不能加空格,否则会无法匹配到。不在同一节点的使用空格隔开,同一节点的不加空格。

以下面的HTML代码为例:

分析代码如下:

输出结果如下:

3、实例:爬取https://m.tianyancha.com/search/oc35-s2/p1中企业信息。

有了以上知识后,我们可以利用上述知识获取企业信息,在天眼查网站里有各类企业信息,打开https://m.tianyancha.com/search/oc35-s2,如下图是页面信息

我们的任务是获取企业信息,具体步骤如下:

1)获取页面信息,用google浏览器打开的页面中右键打开检查,依次点开 network--doc--headers中的Request URL,这个地址是我们要爬取页面的地址。

用res=requests.get(‘https://m.tianyancha.com/search/oc35-s2/’) 返回requests对象得到该页面所有内容。

2)分析内容,获取内容 查看源码后发现我们要找企业信息在一个“<div class="search_result_container">”容器中,可以用select方法获取所有内容;

公司名称在“<div class="col-xs-10 search_name pl0 pr0"><a href="/company/3565313" style="word-break:break-all;" class="query_name in-block" onclick="common.stopPropagation(event)"><span style="color:#2e2e2e;">杭叉集团股份有限公司</span></a></div>”中,而其他信息都在<div class=”title”> 中,如下图

参考代码:

代码运行结果:

原文发布于微信公众号 - Python小屋(Python_xiaowu)

原文发表时间:2018-01-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

JAVA:自定义套件...

各位亲爱的小伙伴们大家好,最近很多伙伴都问我该怎么做自定义套件封装,我在这里做了一个教程分享给大家。

732
来自专栏夏时

从零开始,学会 PHP 采集

2463
来自专栏逍遥剑客的游戏开发

MPQ文件系统优化

1686
来自专栏从零开始学自动化测试

Selenium2+python自动化44-元素定位参数化(find_element)

前言 元素定位常用的有八种方法,这个能看到这一篇的小伙伴都知道了,那么有没有一种方法,可以把常用的八种定位合为一种呢?也就是把定位的方式参数化,如id,name...

3375
来自专栏阿凯的Excel

Pandas读书笔记0(Anaconda与jupyter安装)

今天和大家分享一个编辑Python的神器!--Jupyter! 之前使用的是Python自带的IDLE,作为自带的系统,是和IE浏览器一样的存在! 用一张老图...

3194
来自专栏从零开始学自动化测试

Selenium2+python自动化39-关于面试的题

前言 最近看到群里有小伙伴贴出一组面试题,最近又是跳槽黄金季节,小编忍不住抽出一点时间总结了下, 回答不妥的地方欢迎各位高手拍砖指点。 一、selenium中如...

3216
来自专栏我和我大前端的故事

我练习项目眼中的 vue

因为毕业设计开始了 vue 的学习之路,曾写过一些入门的 vue 小白学习文章系列(2018 我所了解的 Vue 知识大全(一))。如今已经工作半年了,这一次想...

2712
来自专栏守候书阁

重构 - 设计API的扩展机制

上篇文章,主要介绍了重构的一些概念和一些简单的实例。这一次,详细的说下项目中的一个重构场景--给API设计扩展机制。目的就是为了方便以后能灵活应对需求的改变。当...

48117
来自专栏软件开发

前端MVC学习总结(二)——AngularJS验证、过滤器、指令

一、验证 angularJS中提供了许多的验证指令,可以轻松的实现验证,只需要在表单元素上添加相应的ng属性,常见的如下所示: <input Type="tex...

2356
来自专栏欧阳大哥的轮子

iOS的MVC框架之控制层的构建(上)

在我前面的两篇文章里面分别对MVC框架中的M层的定义和构建方法进行了深入的介绍和探讨。这篇文章则是想深入的介绍一下我们应该如何去构建控制层。控制层是联系视图层和...

1132

扫码关注云+社区

领取腾讯云代金券