当前位置:首页>开发>正文

python有哪些提取文本摘要的库 网络爬虫 python 毕业论文呢

2023-05-17 20:48:34 互联网 未知 开发

 python有哪些提取文本摘要的库 网络爬虫 python 毕业论文呢

python有哪些提取文本摘要的库

一篇文章的内容可以是纯文本格式的,但在网络盛行的当今,更多是HTML格式的。无论是哪种格式,摘要 一般都是文章 开头部分 的内容,可以按照指定的 字数 来提取。
二、纯文本摘要
纯文本文档 就是一个长字符串,很容易实现对它的摘要提取:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Get a summary of the TEXT-format document"""
def get_summary(text, count):
u"""Get the first `count` characters from `text`
>>> text = uWelcome 这是一篇关于Python的文章
>>> get_summary(text, 12) == uWelcome 这是一篇
True
"""
assert(isinstance(text, unicode))
return text[0:count]
if __name__ == __main__:
import doctest
doctest.testmod()

三、HTML摘要
HTML文档 中包含大量标记符(如

等等),这些字符都是标记指令,并且通常是成对出现的,简单的文本截取会破坏HTML的文档结构,进而导致摘要在浏览器中显示不当。
在遵循HTML文档结构的同时,又要对内容进行截取,就需要解析HTML文档。在Python中,可以借助标准库 HTMLParser 来完成。
一个最简单的摘要提取功能,是忽略HTML标记符而只提取标记内部的原生文本。以下就是类似该功能的Python实现:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Get a raw summary of the HTML-format document"""
from HTMLParser import HTMLParser
class SummaryHTMLParser(HTMLParser):
"""Parse HTML text to get a summary
>>> text = u

Hi guys:

This is a example using SummaryHTMLParser.


>>> parser = SummaryHTMLParser(10)
>>> parser.feed(text)
>>> parser.get_summary(u...)
u

Higuys:Thi...


"""
def __init__(self, count):
HTMLParser.__init__(self)
self.count = count
self.summary = u
def feed(self, data):
"""Only accept unicode `data`"""
assert(isinstance(data, unicode))
HTMLParser.feed(self, data)
def handle_data(self, data):
more = self.count - len(self.summary)
if more > 0:
# Remove possible whitespaces in `data`
data_without_whitespace = u.join(data.split())
self.summary = data_without_whitespace[0:more]
def get_summary(self, suffix=u, wrapper=up):
return u<{0}>{1}{2}.format(wrapper, self.summary, suffix)
if __name__ == __main__:
import doctest
doctest.testmod()

HTMLParser(或者 BeautifulSoup 等等)更适合完成复杂的HTML摘要提取功能,对于上述简单的HTML摘要提取功能,其实有更简洁的实现方案(相比 SummaryHTMLParser 而言):
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Get a raw summary of the HTML-format document"""
import re
def get_summary(text, count, suffix=u, wrapper=up):
"""A simpler implementation (vs `SummaryHTMLParser`).
>>> text = u

Hi guys:

This is a example using SummaryHTMLParser.


>>> get_summary(text, 10, u...)
u

Higuys:Thi...


"""
assert(isinstance(text, unicode))
summary = re.sub(r<.*?>, u, text) # key difference: use regex
summary = u.join(summary.split())[0:count]
return u<{0}>{1}{2}.format(wrapper, summary, suffix)
if __name__ == __main__:
import doctest
doctest.testmod()

网络爬虫 python 毕业论文呢

做爬虫,特别是python写说容易挺容易,说难也挺难的,
举个栗子 简单的:将http://paste.ubuntu.com上面的所有代码爬下来
写个for循环,调用urllib2的几个函数就成了,基本10行到20行以内的代码
难度0

情景:
1.网站服务器很卡,有些页面打不开,urlopen直接就无限卡死在了某些页面上(2.6以后urlopen有了timeout)
2.爬下来的网站出现乱码,你得分析网页的编码
3.网页用了gzip压缩,你是要在header里面约定好默认不压缩还是页面下载完毕后自己解压
4.你的爬虫太快了,被服务器要求停下来喝口茶
5.服务器不喜欢被爬虫爬,会对对header头部浏览器信息进行分析,如何伪造
6.爬虫整体的设计,用bfs爬还是dfs爬
7.如何用有效的数据结构储存url使得爬过的页面不被重复爬到
8.比如1024之类的网站(逃,你得登录后才能爬到它的内容,如何获取cookies

以上问题都是写爬虫很常见的,由于python强大的库,略微加了一些代码而已
难度
情景:
1.还是cookies问题,网站肯定会有一个地方是log out,爬虫爬的过程中怎样避免爬到各种Log out导致session失效
2.如果有验证码才能爬到的地方,如何绕开或者识别验证码
3.嫌速度太慢,开50个线程一起爬网站数据

难度
情景:
1.对于复杂的页面,如何有效的提取它的链接,需要对正则表达式非常熟练
2.有些标签是用Js动态生成的,js本身可以是加密的,甚至奇葩一点是jsfuck,如何爬到这些

难度
总之爬虫最重要的还是模拟浏览器的行为,具体程序有多复杂,由你想实现的功能和被爬的网站本身所决定
爬虫写得不多,暂时能想到的就这么多,欢迎补充

求网络爬虫参考文献

主题网络32313133353236313431303231363533e4b893e5b19e31333238653934爬虫研究综述
摘要: 首先给出了主题网络爬虫的定义和研究目标 然后系统分析了近年来国内外主题爬虫的研究方法和技
术, 包括基于文字内容的方法、基于超链分析的方法、基于分类器预测的方法以及其他主题爬行方法, 并比较了
各种方法优缺点 最后对未来的研究方向进行了展望。
关键词: 主题网络爬虫 信息检索 Web 挖掘
中图分类号: TP391 文 献标志码: A 文 章编号: 1001- 3695( 2007) 10- 0026- 0Survey on topic-focused Web crawler
LIU Jin-hong, LUYu-liang
( Dept. of Network, PLA Electric Engineer Institute, Hefei 230037, China)
Abstract: This paper gave the goal of focused crawling, then comprehensively analyzed the recent advances of the relevant researches
and applications about focused-crawler, included focused crawling methods based on text contents, link analyses’
methods, classifier-guided methods and other focused methods. Finally pointed out the future direction of focused crawling.
Key words: topic-focused crawler information retrieval Web mining
0 引言
随着网络上海量信息的爆炸式增长, 通用搜索引擎面临着
索引规模、更新速度和个性化需求等多方面的挑战[ 1, 2] 。面对
这些挑战, 适应特定主题和个性化搜索的主题网络爬虫( focused
crawler or topical crawler) 应运而生[ 3, 4] 。基于主题网络
爬虫的搜索引擎( 即第四代搜索引擎) 已经成为当前搜索引擎
和Web 信息挖掘中的一个研究热点和难点。
通用网络爬虫的目标就是尽可能多地采集信息页面, 而在
这一过程中它并不太在意页面采集的顺序和被采集页面的相
关主题。这需要消耗非常多的系统资源和网络带宽, 并且对这
些资源的消耗并没有换来采集页面的较高利用率。主题网络
爬虫则是指尽可能快地爬行、采集尽可能多的与预先定义好的
主题相关的网页。主题网络爬虫可以通过对整个Web 按主题
分块采集, 并将不同块的采集结果整合到一起, 以提高整个
Web 的采集覆盖率和页面利用率。
1 主题爬虫的定义和研究目标
定义1 网络爬虫是一个自动提取网页的程序, 它为搜索
引擎从Web 上下载网页, 是搜索引擎的重要组成部分。通用
网络爬虫从一个或若干初始网页的URL 开始, 获得初始网页
上的URL 列表 在抓取网页的过程中, 不断从当前页面上抽取
新的URL 放入待爬行队列, 直到满足系统的停止条件。
定义2 主 题网络爬虫就是根据一定的网页分析算法过
滤与主题无关的链接, 保留主题相关的链接并将其放入待抓取
的URL 队列中 然后根据一定的搜索策略从队列中选择下一
步要抓取的网页URL, 并重复上述过程, 直到达到系统的某一
条件时停止。所有被网络爬虫抓取的网页将会被系统存储, 进
行一定的分析、过滤, 并建立索引, 对于主题网络爬虫来说, 这
一过程所得到的分析结果还可能对后续的抓取过程进行反馈
和指导。
定义3 如果网页p 中包含超链接l, 则p 称为链接l 的父
网页。
定义4 如果超链接l 指向网页t, 则网页t 称为子网页,
又称为目标网页。
主题网络爬虫的基本思路就是按照事先给出的主题, 分析
超链接和已经下载的网页内容, 预测下一个待抓取的URL 以
及当前网页的主题相关度, 保证尽可能多地爬行、下载与主题
相关的网页, 尽可能少地下载无关网页。相对于通用网络爬
虫, 主题网络爬虫需要解决以下四个主要问题:
a) 如何描述或定义感兴趣的主题( 即抓取目标) ?
b) 怎样决定待爬行URL的访问次序? 许多主题网络爬虫
根据己下载网页的相关度, 按照一定原则将相关度进行衰减,
分配给该网页中的子网页, 而后将其插入到优先级队列中。此
时的爬行次序就不是简单地以深度优先或广度优先顺序, 而是
按照相关度大小排序, 优先访问相关度大的URL。不同主题
网络爬虫之间的区别之一就是如何计算URL的爬行次序。
c) 如何判断一个网页是否与主题相关? 对于待爬行或己
下载的网页可以获取它的文本内容, 所以可以采用文本挖掘技
术来实现。因此不同主题网络爬虫间的区别之二就是如何计
算当前爬行网页的主题相关度。

最新文章