python 之readability与BeautifulSoup
以前要采集某个网页,一般做法是写程序源代码爬出来,然后用正则去匹配出来,这种针对指定的网页去爬效果还可以,但是如果是批量的网页这种实现就会变得不现实,在这时候就有readability出手的意义了,readability能迅速将内容爬取出来,其他的有几种库也可以,这里就不比较了但是我觉得这个挺好用的。接着说,用pip 安装好readability模块就可以使用了。代码如下
html = urllib.urlopen("http://www.cnblogs.com/EncryptingLife/p/5156263.html").read()
readable_article = Document(html).summary()
readable_title = Document(html).short_title()
这个时候readable_article就是爬取的内容,按照常例写正则匹配,前面已经说过了这种方式不适合大量的页面,
BeautifulSoup 非常强大可以用来找出对应的东西不需要写正则。官方文档是:
http://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/#id5
简单的说说里面的几种用法吧。
soup =BeautifulSoup(readable_article,"lxml")
1.按照标签来获取
eg:
1.tag = soup.p
这个会获取p标签的内容 如果直接打印的话会显示为第一个p元素的值
2.tag = soup.head
这个获取head里面的内容
2.用css选择器来获取
eg:
1.soup.select(".python")
这里会查找所有class为python的元素,ID直接是soup.select("#python")
2.
z=soup.select("p > a")
for a in z:
print a.get("href")
这个可以把p标签下的a标签全部取出来,然后获取它的url
3.soup.find_all("p", class_="body strikeout")
3.取文本的可以使用soup.get_text()
这里会取出里面所有的文本
4.find() 与find_all()
eg
1.soup.find('head')
这个会查找head
2.soup.find_all('b')
这个是查找所有的b元素
3.传递方法
也可以是这样的:
def has_class_but_no_id(tag): return tag.has_attr('class') and not tag.has_attr('id')
4.也可以用正则
for tag in soup.find_all(re.compile("^b")):
print(tag.name)
5.也可以传递列表这时候会匹配出符合其中一个条件的项相当于或者
soup.find_all(["a", "b"])
这个会查找所有a标签与b标签
6.还可以有如下几种形式
soup.find_all(id="link2")
soup.find_all("p", "title")
soup.find_all("title")
soup.find_all(href=re.compile("elsie"))
5.还有几种类似jquery的写法
first_link.find_next_siblings("a")
last_link = soup.find("a", id="link3")
last_link # <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>
last_link.find_previous_siblings("a")
这时候会查找到符合前面条件的兄弟节点
下面这个可以查找父元素
title_tag = soup.title
title_tag # <title>The Dormouse's story</title>
title_tag.parent
# <head><title>The Dormouse's story</title></head>
暂时就写到这里
python 之readability与BeautifulSoup的更多相关文章
- python学习之——安装Beautifulsoup、requests、lxml
安装Beautiful soup: 1.下载安装包,解压到python的安装目录: 2.cmd 进入安装包解压后的存放位置: 3.使用命令:python setup.py build , pyt ...
- Python学习 - 使用BeautifulSoup来解析网页一:基础入门
写技术博客主要就是总结和交流的,如果文章用错,请指正啊! 以前一直在使用SGMLParser,这个太费时间和精力了,现在为了毕业设计,改用BeautifulSoup来实现HTML页面的解析工作的. 一 ...
- Python爬虫:用BeautifulSoup进行NBA数据爬取
爬虫主要就是要过滤掉网页中没用的信息.抓取网页中实用的信息 一般的爬虫架构为: 在python爬虫之前先要对网页的结构知识有一定的了解.如网页的标签,网页的语言等知识,推荐去W3School: W3s ...
- 【Python】 html解析BeautifulSoup
BeautifulSoup bs是个html解析模块,常用来做爬虫? ■ 安装 BeautifulSoup可以通过pip来安装,用pip install beautifulsoup4 即可.但是仅仅这 ...
- Python爬虫基础之BeautifulSoup
一.BeautifulSoup的基本使用 from bs4 import BeautifulSoup from bs4 import SoupStrainer import re html_doc = ...
- Python开发爬虫之BeautifulSoup解析网页篇:爬取安居客网站上北京二手房数据
目标:爬取安居客网站上前10页北京二手房的数据,包括二手房源的名称.价格.几室几厅.大小.建造年份.联系人.地址.标签等. 网址为:https://beijing.anjuke.com/sale/ B ...
- Python HTML解析器BeautifulSoup(爬虫解析器)
BeautifulSoup简介 我们知道,Python拥有出色的内置HTML解析器模块——HTMLParser,然而还有一个功能更为强大的HTML或XML解析工具——BeautifulSoup(美味的 ...
- python爬虫训练——正则表达式+BeautifulSoup爬图片
这次练习爬 传送门 这贴吧里的美食图片. 如果通过img标签和class属性的话,用BeautifulSoup能很简单的解决,但是这次用一下正则表达式,我这也是参考了该博主的博文:传送门 所有图片的s ...
- Python爬虫利器:BeautifulSoup库
Beautiful Soup parses anything you give it, and does the tree traversal stuff for you. BeautifulSoup ...
随机推荐
- MongoDB的TruncationException异常解决方法
近期由于DB4O的一些无解的BUG,导致现行的项目查询效率底下,于是愤而迁移到了MongoDB. MongoDB虽然比DB4O的用户要多一些,但是文档依然极度匮乏,遇到问题不是那么容易就能搜到解决办法 ...
- NC nc5.x笔记(编辑中)
一.设置卡片界面下 金额字段负数为红色! /** * 设置卡片界面下 金额字段负数为红色! */ private void repaintBodyMoneyColor(){ if(!isListPan ...
- AngularJs自定义指令详解(6) - controller、require
在前面文章中提到一旦声明了require,则链接函数具有第四个参数:controller. 可见require和controller是配合使用的. 在自定义指令中使用controller,目的往往是要 ...
- 使用AsyncTask实现文件下载并且在状态中显示下载进度
2013年10月24日 上班的第二天 昨天我是用afinal完成的则个功能,但是公司里并不希望使用第三方的代码,所以要求我在不使用第三方开源项目的情况下实现. 最先我是使用Thread开启一个子线程, ...
- c++内存分布
http://www.oschina.net/translate/cpp-virtual-inheritance 编译器会加入一些代码, 指针的转换操作编译器会自动加偏移
- DHCP配置
DHCP服务器IP:192.168.1.10 一,安装dhcp [root@localhost ~]# yum install dhcp Loaded plugins: product-id, sub ...
- C# 解析 Json
C# 解析 json JSON(全称为JavaScript Object Notation) 是一种轻量级的数据交换格式.它是基于JavaScript语法标准的一个子集. JSON采用完全独立于语言的 ...
- [WPF]建立自适应窗口大小布局的WinForm窗口
编写WinForm程序时,都会碰到一个问题.就是WinForm窗口在不同分辨率下的大小问题.举例说明,你编写的WinForm窗口在1024×768下是合适.匀称的.不过,如果用户的计算机的分辨率为14 ...
- 替换CENTOS自带的yum源为网易163镜像源
首先确保你的系统是centos5或者centos6 先备份你系统自带的repo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/Cent ...
- SQLServer : 几个特殊函数(RAND,CHECKSUM, NEWID)
这一篇我们来捋捋在T-SQL中可能会用到的几个特殊的函数 1. 随机数: RAND 返回从 0 到 1 之间的随机 float 值. 语法: RAND ( [ seed ] ) seed 提供种子值的 ...