burst VPS_python数据挖掘_beautifulsoup中文文档

电脑杂谈  发布时间:2017-02-19 02:59:48  来源:网络整理

在前面的几篇文章中我介绍了如何通过Python分析源代码来爬取博客、维基百科InfoBox和图片,其文章链接如下:

[python学习] 简单爬取维基百科程序语言消息盒

[Python学习] 简单网络爬虫抓取博客文章及思想介绍

[python学习] 简单爬取图片网站图库中图片

其中核心代码如下:

# coding=utf-8
import urllib
import re

#下载静态HTML网页
url='http://.csdn.net/'
content = urllib.urlopen(url).read()
open('csdn.html','w+').write(content)
#获取标题
title_pat=r'(?<=<title>).*?(?=</title>)'
title_ex=re.compile(title_pat,re.M|re.S)
title_obj=re.search(title_ex, content)
title=title_obj.group()
print title
#获取超链接内容 
href = r'<a href=.*?>(.*?)</a>'
m = re.findall(href,content,re.S|re.M)
for text in m:
    print unicode(text,'utf-8')
    break #只输出一个url

输出结果如下:

>>>
CSDN.NET - 全球最大中文IT社区,为IT技术人员提供最全面的信息传播和服务平台
登录
>>>

图片下载的核心代码如下:

import os
import urllib
class AppURLopener(urllib.FancyURLopener):
    version = "Mozilla/5.0"
urllib._urlopener = AppURLopener()
url = "http://creatim.allyes.com.cn/imedia/csdn/20150228/15_41_49_5B9C9E6A.jpg"
filename = os.path.basename(url)
urllib.urlretrieve(url , filename)

但是上面这种分析HTML来爬取网站内容的方法存在很多弊端,譬如:

1.正则表达式被HTML源码所约束,而不是取决于更抽象的结构;网页结构中很小的改动可能会导致程序的中断。

2.程序需要根据实际HTML源码分析内容,可能会遇到字符实体如&之类的HTML特性,需要指定处理如、图标超链接、下标等不同内容。

3.正则表达式并不是完全可读的,更复杂的HTML代码和查询表达式会变得很乱。

正如《Python基础教程(第2版)》采用两种解决方案:第一个是使用Tidy(Python库)的程序和XHTML解析;第二个是使用BeautifulSoup库。

Beautiful Soup是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖析树(parse tree)。

它提供简单又常用的导航navigating,搜索以及修改剖析树的操作。它可以大大节省你的编程时间。

正如书中所说“那些糟糕的网页不是你写的,你只是试图从中获得一些数据。现在你不用关心HTML是什么样子的,解析器帮你实现”。beautifulsoup中文文档

下载地址:

安装过程如下图所示:python setup.py install


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-33240-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 田国梅
      田国梅

      美国船这样远的来参观中国南海建设

    热点图片
    拼命载入中...