BeautifulSoup4最常用的5个函数–转{张亚楠}-Python 技术分享 Java技术分享 Python 爬虫技术_微信公众号:zeropython—昊天博客

KONICA MINOLTA DIGITAL CAMERA

1、BeautifulSoup是爬取网页信息使用频率最高的库,下面简单介绍一下我编写脚本过程中利用bs4获取信息的方法。
2、本文用到到网的某一购物场所作为例子:
url='http://www.tripadvisor.cn/Attraction_Review-g294217-d3821611-Reviews-Empire_International_Tailors-Hong_Kong.html'
3、写脚本的时候经常参考网上别人写的,号称“菜鸟”“简洁易懂”,今天就让我来告诉你什么叫真正的菜!!!

1、find()

要点:找到唯一标签
例如:我们需要找出上面所给网页的购物场所的英文名,我们发现在这一段:
<span class="altHead">Empire International Tailors</span>
class 标签是唯一的,很简单,代码如下:

2、extract()

要点:移除指定标签,并返回结果
例如:很多时候我们发现情况没有第一种那么简单,比如我们需要爬取所给网页中的中文名,我们发现在这一段:

如果通过:soup.find_all('h1',{'id':"HEADING"}),获取的是一整段,中文和英文名是一起的,所以一种方法是使用extract()移除<span>标签。代码如下:

3、select()

要点:通过属性值查找,避免相似
例如:很多属性值很相似,比如class="detail",class="detail_section info",class="detail wrap",所以如果通过find来查找,找出来的往往是一大批,这个时候就需要精确定位,例如我们需要爬取所给网页中的店铺分类,我们发现在这一段:

通观整个网页源代码我们发现,很多跟class="detail"类似的标签,所以我们使用select()精确指定我们需要的属性值,代码如下:

再例如:我们需要获取导航栏目,我们发现在这一段:

分析:看上去让人很火大,一个个去获取的话,一方面比较繁琐,另一方面因为各个购物场所的情况不一样,当然也可以用selenium,不过那种也比较繁琐,看上去不简洁,通过观察我们发现onclick属性值有共同之处,于是代码如下:

说明:^的意思是符合onclick属性值的前半部分,当然还可以符合后半部分加$。此种方法在获取href属性值的时候也会经常用到。

4、get_text()

要点:获取指定标签下所有文字内容,方便简洁
例如:我们需要爬取所给网页中的地址信息,我们发现在这一段:

分析:短短一个地址分得四分五裂,这就是到到的可恨之处,get_text()可以一锅端了,如果使用string必须定义到最近一层标签,比较麻烦,而且此处也没有必要。代码如下:

5、get_text("",strip=True)

要点:去除所获得文本的空白、换行等,干净整洁
例如:我们需要获得所给网页中的营业时间,我们发现在这一段:

如果直接获取文本内容的话,代码如下:

但是会出现很多换行,很不好看,需要去除空白处,代码如下:

评价:

一般来说,获取网页信息除了bs4,还有selenium、re两种。ba4不能获取的时候,一些边边角角毫无章程的信息使用re比较方便直接(我经常这么干),比如到到网的poi的经纬度信息。掌握了bs4的使用方法,结合re,爬取网页信息基本无障碍了。

后序:

bs4博大精深,我只是介绍了一下冰山一角,一般实际操作的过程中经常会发生各种意想不到的情况,此乃技艺生疏的表现,所以一般我会打开这个网址:https://www.crummy.com/software/BeautifulSoup/bs4/doc/#searching-the-tree,非常全面,很久之后。我发现网页的头部写得很清楚,有中文版本:https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/。




HTTPX 基础教程-新乡seo|网站优化,网站建设_微信公众号:zeropython—昊天博客