以前要采集某个网页,一般做法是写程序源代码爬出来,然后用正则去匹配出来,这种针对指定的网页去爬效果还可以,但是如果是批量的网页这种实现就会变得不现实,在这时候就有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的更多相关文章

  1. python学习之——安装Beautifulsoup、requests、lxml

    安装Beautiful soup: 1.下载安装包,解压到python的安装目录: 2.cmd 进入安装包解压后的存放位置: 3.使用命令:python  setup.py build   , pyt ...

  2. Python学习 - 使用BeautifulSoup来解析网页一:基础入门

    写技术博客主要就是总结和交流的,如果文章用错,请指正啊! 以前一直在使用SGMLParser,这个太费时间和精力了,现在为了毕业设计,改用BeautifulSoup来实现HTML页面的解析工作的. 一 ...

  3. Python爬虫:用BeautifulSoup进行NBA数据爬取

    爬虫主要就是要过滤掉网页中没用的信息.抓取网页中实用的信息 一般的爬虫架构为: 在python爬虫之前先要对网页的结构知识有一定的了解.如网页的标签,网页的语言等知识,推荐去W3School: W3s ...

  4. 【Python】 html解析BeautifulSoup

    BeautifulSoup bs是个html解析模块,常用来做爬虫? ■ 安装 BeautifulSoup可以通过pip来安装,用pip install beautifulsoup4 即可.但是仅仅这 ...

  5. Python爬虫基础之BeautifulSoup

    一.BeautifulSoup的基本使用 from bs4 import BeautifulSoup from bs4 import SoupStrainer import re html_doc = ...

  6. Python开发爬虫之BeautifulSoup解析网页篇:爬取安居客网站上北京二手房数据

    目标:爬取安居客网站上前10页北京二手房的数据,包括二手房源的名称.价格.几室几厅.大小.建造年份.联系人.地址.标签等. 网址为:https://beijing.anjuke.com/sale/ B ...

  7. Python HTML解析器BeautifulSoup(爬虫解析器)

    BeautifulSoup简介 我们知道,Python拥有出色的内置HTML解析器模块——HTMLParser,然而还有一个功能更为强大的HTML或XML解析工具——BeautifulSoup(美味的 ...

  8. python爬虫训练——正则表达式+BeautifulSoup爬图片

    这次练习爬 传送门 这贴吧里的美食图片. 如果通过img标签和class属性的话,用BeautifulSoup能很简单的解决,但是这次用一下正则表达式,我这也是参考了该博主的博文:传送门 所有图片的s ...

  9. Python爬虫利器:BeautifulSoup库

    Beautiful Soup parses anything you give it, and does the tree traversal stuff for you. BeautifulSoup ...

随机推荐

  1. Ubuntu15下mysql5.6.25解决不支持中文的办法

    apt-get install 安装的,不是源码包安装的mysql 1 修改mysql的配置文件 /etc/mysql/conf.d/mysql.cnf 在[mysql]的下方加入如下语句:(注:这个 ...

  2. Yii2 中禁用csrf校验

    Yii2 默认开启csrf校验,但是有些时候确实不需要校验,比如对外提供API 一般做法直接在xxController中增加属性: public $enableCsrfValidation = fal ...

  3. WinForm用户自定义控件,在主窗体加载时出现闪烁;调用用户控件出现闪烁,需要鼠标才能够显示

    转载自:http://www.dotblogs.com.tw/rainmaker/archive/2012/02/22/69811.aspx 解决方案: 在调用用户控件的窗体里面添加一下代码: pro ...

  4. EF6配合MySQL或MSSQL(CodeFirst模式)配置指引

    一.新建一个解决方案,包含两个项目:EF6CodeFirstMySQL.Model(动态库项目),EF6CodeFirstMySQL.Tests(控制台应用) 二.通过NuGet将EntityFram ...

  5. 2-6 Working with Lambdas

    在C++中使用匿名函数,格式如下:[] () {}; Using a Lambda to Print array Values #include <algorithm> #include ...

  6. 迅雷VIP帐号获取小工具

    自己写的迅雷vip帐号获取工具,主要是熟悉一下正则表达式 下载地址: 迅雷VIP获取工具 另附vip防踢补丁,不能使用最新迅雷,我使用的是迅雷尊享版2.0.12.258,使用了一段时间,至少没被踢出来 ...

  7. 在Mac上搭建本地Apache服务器一些注意点

    一般在开发ios程序中,我们需要使用到和服务器的交互操作. 一般我们在Mac上使用Apache来搭建服务器.数据库采用MySQL.在Mac中Apache是自带的.所有,我们可以不需要额外的去Apple ...

  8. 在线编辑器的使用-KindEditor

    第一种:KindEditor编辑器 步骤一:加载相应的核心的文件 下载地址:http://kindeditor.net/demo.php <link rel="stylesheet&q ...

  9. OD使用教程9

    先运行程序打开about,发现这是一个未注册的软件需要注册后才能使用里面的工具,所以随便注册一下,跳出一个提示说注册的是非法的邮箱,所以就可以以此做为突破口来破解这个程序 将提示的语句作为关键字去找出 ...

  10. webDriver环境搭建与测试

    1.安装jdk 2.安装eclipse 3.安装selenium 由于使用的是开发语言是java,因此需要安装java版的selenium包.下载地址:http://pan.baidu.com/s/1 ...