最近想来学习一下关于python爬虫的技能。看了在bilibili上面的视频,学习了requests后面的一章。前面的一章没有时间写博文了,就掠过吧。人生第一篇博客 。

1.安装BeautifulSoup

由于演示使用的是python3,所以安装都一样。在控制台用pip install beautifulsoup4命令直接安装就可以了。我之前安装了完整的anaconda3,貌似直接集成在里面了。

2.使用

BeautifulSoup只能对已经是html的字符文件进行操作。先利用之前学过的方法,把所有爬虫弄到的信息保存成二进制形式:

import requests bs4 import BeautifulSoup

url = = requests.get(url)
demo = r.text

soup = BeautifulSoup(demo,'html.parser')
#这里soup就已经是一个可以进行识别处理的html文件格式,‘html.parser’是html相应的解释器

3.元素类型

BeautifulSoup库中共有5种元素类型,Tag,Name,Attributes,Navigablestring,commont。

Tag:<p class = "title">...</p>就是一个完整的Tag。

Name:上面例子中的name是‘p’,调用方法是soup.p.name

Attributes:上面class = “title”就是一个属性。属性可以有多个,组成的是一个字典,调用方法是soup.p.attrs,返回结果是一个字典

Navigablestring:一对尖括号之间的非属性字符串都是string,调用方法是soup.p.string,返回结果是一个字符串

for tag in soup.find_all(True): 
    print(tag.name)
#先找到所有的tag名字,然后对其进行处理

4.遍历方法

三种:上行,平行,下行

(1)上行遍历:寻找父辈标签节点。命令有soup.<tag>.parent/parents。parents只用于在for循环中的遍历过程。

#上行遍历的模板

for parent in soup.a.parents:
    if parent is None:
        print(parent)
    else:
        print(parent.name)

(2)平行遍历:寻找与当前标签同父标签的兄弟标签节点。命令有next_sibling,next_siblings,previous_sibling,previous_siblings。复数形式同样只用于循环结构中。

(3)下行遍历:寻找子标签节点。contents返回一个列表,其中包含了所有的查找子节点。children是对上述所有子节点进行遍历,只用于循环中。descendants用于寻找所有的子孙节点,只用于循环中。

 5.网页信息的提取

提取信息的函数方法是find_all()

soup.find_all()     #寻找soup中所有的标签

for tag in soup.find_all():
    print(tag.name)

 

posted on 2017-07-03 11:20  我上课在玩手机  阅读(193)  评论(0编辑  收藏  举报