Python之BeautifulSoup常用详细使用

因工作需要,日常工作中有不少时间是用在了反复登陆内网。

故详细研究测试了BeautifulSoup的用法,总结下来备用爬网页之需。

首先是导入模块并初始化了:

from bs4 import BeautifulSoup
soup=BeautifulSoup(opener)

#1、tag标签法
如果一层层的标签包下去,只取每层标签第一个,或只有唯一一个时,可以用

soup.head.title

但并行多个同名标签的则不能title[2]之类查找

#2、contents法
根据文档树进行搜索,返回标记对象(tag)的列表,注意,直接.contents,返回的是列表,不是单一元素
使用contents向后遍历树,使用parent向前遍历树

共两种用法:

soup.contents

soup.contents[x].contents

返回值是包含html标签全部内容的列表。比如可能是三元素:[u‘\n‘,‘<html>xxxx</html>‘,u‘\n‘]
soup.contents[x]则是对列表各元素值的获取了

soup.contents[x].contents

返回值是目标标签的下一层(即为该标签为父,则抓取到的都是子的列表)全部标签的列表。这里如果x取错,可能会导致
错误,因为取错则生不成列表,后面contents会弹错。

1 soup.contents[1]=u‘HTML‘

2 soup.contents[2]=u‘\n‘

3 soup.contents[3]=<html>...</html> 

soup.contents[3].contents=[u‘\n‘,<head>...</head>,u‘\n‘,<body>...</body>,u‘\n‘]

以此类推,soup.contents[3].contents[3]=肯定是上述列表中的第四个元素body。

#3、.next法
只能针对单一元素进行.next,或者说是对contents列表元素的挨个清点。
比如

soup.contents[1]=u‘HTML‘
soup.contents[2]=u‘\n‘

则soup.contents[1].next等价于soup.contents[2]

#搜索法

find(name=None, attrs={}, recursive=True, text=None, **kwargs)

主要2个:.find(‘p‘),.findAll(‘p‘)
find返回的是字符串值,而且是返回从头查找到的第一个tag对。但是如果这第一个tag对包括大量的内容,父等级很高,则同时其内部所包含的

此级标签也全部都find

findAll返回值是个列表,如果发现了一个同名标签内含多个同名标签,则内部的标签一并归于该父标签显示,列表其他元素也不再体现那些内含

的同名子标签。
比如:

soup.findAll(onclick=‘document.location...‘)
    soup.findAll(attrs={‘style‘:r‘outline:none;‘}) #用来查找属性中有style=‘outline:none;的标签体。

#4、.attrs[x]获取属性值法
在上述各种方法找到唯一的标签体之后,可以通过对标签实施attrs,得到一个内部属性的列表。
在标签后面新增.attrs[‘id‘]等等即可取得该标签内部id的属性值
比如:

soup.contents[3]==<meta abc=‘god‘ href=‘/‘>
soup.contents[3].attrs=={‘abc‘:‘god‘,‘href‘:‘/‘}
soup.contents[3].attrs[1]=‘/‘

Python之BeautifulSoup常用详细使用

时间: 2024-10-23 17:02:00

Python之BeautifulSoup常用详细使用的相关文章

python编写shell脚本详细讲解

今天需要编写一个shell脚本实现App自动生成的功能,需要处理HTTP REST请求,解析JSON,处理文件,执行命令等,本来想用shell搞定,但感觉比较麻烦,还是用python吧,虽然以前用Python都是在树莓派上玩的,多尝试一种方法总是好的. 虽然我受linux的影响甚深,但是对于*nix 里随处可见的sh脚本却是讨厌之极.为什么讨厌呢?首先是因为sh脚本那莫名其妙的语法,感觉就像随写随扔的程序,完全没有任何美感可言.其次是sh脚本的处理能力还是比较弱的,在文本处理.XML处理还有网络

用python的BeautifulSoup分析html

http://www.cnblogs.com/twinsclover/archive/2012/04/26/2471704.html  用python的BeautifulSoup分析html http://www.crummy.com/software/BeautifulSoup/bs3/documentation.zh.html  Beautiful Soup 中文文档 1) 搜索tag: find(tagname)        # 直接搜索名为tagname的tag 如:find('hea

python 日期格式化常用标记

符号 说明             例子    %a  英文星期的简写 Mon  %A  英文星期的完整编写 Monday  %b  英文月份的简写 Jun  %B  英文月份的完整编写 June  %c  显示本地的日期和时间 06/30/14 01:03:17  %I  小时数,取值在01~12之间 01  %j  显示从本年第一天开始到当天的天数 181  %w (week)  显示今天是星期几,0表示星期天 1  %W  显示当天属于本年的第几周,星期一作为一周的第一天进行计算 26  

Python编程中常用的12种基础知识总结

原地址:http://blog.jobbole.com/48541/ Python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序.去重,字典排序,字典.列表.字符串互转,时间对象操作,命令行参数解析(getopt),print 格式化输出,进制转换,Python调用系统命令或者脚本,Python 读写文件. 1.正则表达式替换目标: 将字符串line中的 overview.gif 替换成其他字符串 1 2 3 4 5 6 7 8 9 10 11 >>> lin

Python 编程中常用的 12 种基础知识总结

Python 编程中常用的 12 种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序.去重,字典排序,字典.列表.字符串互转,时间对象操作,命令行参数解析(getopt),print 格式化输出,进制转换,Python调用系统命令或者脚本,Python 读写文件. 1.正则表达式替换 目标:将字符串line中的 overview.gif 替换成其他字符串 >>> line = '<IMG ALIGN="middle" SRC=\'#\'" /s

python之6-1常用函数

1.休眠函数 import time time.sleep(n) n可以是整数或者小数,单位是秒 2.打开文件函数 open('n','m',k) n是文件路径,如果只有文件名,则是py程序所在文件夹 m是打开赋予的权限 k是缓冲,0表示不用缓冲,其他数字表示缓冲数量 r  默认模式,文本模式读 rb     二进制文件 w或wt 文本模式写,打开前文件存储被清空 wb    二进制写,文件存储同样被清空 a  追加模式,只能写在文件末尾 a+ 可读写模式,写只能写在文件末尾 w+ 可读写,与a

Ubuntu下python的BeautifulSoup和rsa安装方法

最近因为<信息检索>第二个project,需要爬取微博数据,然后再处理.师兄给了代码,让慢慢爬,但是在ubuntu下,少了很多python软件包.需要安装. 1.首先运行时,说少了python,BeautifulSoup包,用来解析html文件神奇,这么重要的包怎么能缺少呢,百度ubuntu python BeautifulSoup后,看博客后找到方法: 先安装easy_install工具: 再用easy_install安装: easy_install BeautifulSoup 若是还没有安

python基础31[常用模块介绍]

python基础31[常用模块介绍] python除了关键字(keywords)和内置的类型和函数(builtins),更多的功能是通过libraries(即modules)来提供的. 常用的libraries(modules)如下: 1)python运行时服务 * copy: copy模块提供了对复合(compound)对象(list,tuple,dict,custom class)进行浅拷贝和深拷贝的功能. * pickle: pickle模块被用来序列化python的对象到bytes流,从

windows下python+flask环境配置详细图文教程

本帖是本人在安装配置python和flask环境时所用到的资源下载及相关的教程进行了整理罗列,来方便后面的人员,省去搜索的时间.如果你在安装配置是存在问题可留言给我. 首先罗列一下python+flask环境所用的一些程序组件的下载地址: 1.python语言环境: http://www.python.org/download/ . 2.setuptools 组件: https://pypi.python.org/pypi/setuptools/0.9.6 . 3.pip 组件: https:/