很悲催,python常用的正则表达式一点都不熟,写了个漏洞百出的只看楼主的代码,先贴上来,有空再完善。
# -*- coding: utf8 -*-
import urllib2
import re
#from BeautifulSoup import BeautifulSoup
##def (i,title)=ExtractTitle(rawdata):
## buf=[]
#### print rawdata[0]
## i=0
## while(rawdata[i]):
## m = rawdata[i].find('<title>')
## i=i+1
## rawdata[i]
## i++
## while (m==-1)
##
## if m!=-1:
## i=i+1
## print rawdata[i]
def Extract(rawdata):
author=[]
title=[]
i=0
content=[]
link=[]
while i < len(rawdata):
m = rawdata[i].find('<title>')
if m!=-1:
title=rawdata[i+1]
print title
###find the author
tmpline = rawdata[i].find('topic-doc')
if tmpline!=-1:
print rawdata[i-2]
posBeg=rawdata[i-2].find('alt=')
posEnd=rawdata[i-2].find('/>')
author = rawdata[i-2][posBeg+5:posEnd-1]
print "author: "+author
i=i+1
## find the content written by the author
while i < len(rawdata):
contentLine = rawdata[i].find('alt=\"'+author+'\"')
if contentLine!=-1:
while i< len(rawdata):
pLine = rawdata[i].find('<p>')
if pLine!=-1:
while i< len(rawdata):
pEndLine=rawdata[i].find('</p>')
if pEndLine !=-1:
print rawdata[i]
content.append(rawdata[i])
break
i+=1
break
i+=1
i+=1
i=i+1
def ExtractLink(rawdata,start):
i=start
links=[]
while i< len(rawdata):
line = rawdata[i].find('paginator')
if line!=-1:
tmpRow = rawdata[i]
posBeg=tmpRow.find("href=")
if posBeg!=-1:
tmpRow=tmpRow[posBeg+6:-1]
posBeg=0
while posBeg!=-1:
posEnd=tmpRow.find(">")
## print posBeg
## print posEnd
## print tmpRow[posBeg:posEnd]
links.append(tmpRow[posBeg:posEnd-1])
posBeg=tmpRow.find("href")
if posBeg==-1:
break
tmpRow=tmpRow[posBeg+6:-1]
posBeg=0
break
i+=1
links=links[0:len(links)-1]
return links
def ExtractAuthorContent(rawdata):
author=[]
title=[]
pos=0
pEnd=0
print len(rawdata)
title,pos=findTitle(rawdata,pos)
author,pos=findAuthor(rawdata,pos)
## find the content written by the author
content,pEnd=extractAllSections(rawdata,author,pos)
return author
## print content
## print pEnd
##
def ExtractContent(rawdata,author):
pos=0
print len(rawdata)
print author
## find the content written by the author
content,pEnd=extractAllSections(rawdata,author,pos)
def extractSection(rawdata,start):
i=start
content=[]
done=0
while i< len(rawdata):
pBeginLine = rawdata[i].find('<p>')
if pBeginLine!=-1:
break
i+=1
while i< len(rawdata):
pEndLine=rawdata[i].find('</p>')
content.append(rawdata[i])
if pEndLine !=-1:
print rawdata[i]
break
i+=1
return (content,i)
def extractAllSections(rawdata,author,start):
i=start
content=[]
pEnd=0
count=0
while i < len(rawdata):
contentLine = rawdata[i].find('alt=\"'+author+'\"')
if contentLine!=-1:
tmpContent,i=extractSection(rawdata,i)
content.append(tmpContent)
if i!=rawdata:
count+=1
pEnd=i
i+=1
i+=1
return (content,pEnd)
def findTitle(rawdata,start):
i=start
while i < len(rawdata):
m = rawdata[i].find('<title>')
if m!=-1:
title=rawdata[i+1]
print title
break
i+=1
return(title,i)
def findAuthor(rawdata,start):
i=start
author=0
while i < len(rawdata):
tmpline = rawdata[i].find('topic-doc')
if tmpline!=-1:
posBeg=rawdata[i-2].find('alt=')
posEnd=rawdata[i-2].find('/>')
author = rawdata[i-2][posBeg+5:posEnd-1]
print "author: "+author
break
i+=1
return (author,i)
#data=file('E:/petrelli/play/crawl_douban/douban_2.htm','r').readlines()
#soup = BeautifulSoup(data)
#print soup.prettify()
#Extract(data)
data = urllib2.urlopen('http://www.douban.com/group/topic/9737262/').readlines()
links=ExtractLink(data,0)
author=ExtractAuthorContent(data)
for link in links:
print link
## data = urllib2.urlopen(link).readlines()
## ExtractContent(data,author)
#ExtractAuthorContent(data)
#for line in data:
# print line
分享到:
相关推荐
这个“自己写的随机抽取的小程序”是一个实用工具,主要用于在有限资源的分配中进行随机选择。根据描述,我们可以推断该程序具备以下功能: 1. **自定义抽取内容**:用户可以根据需求设置需要随机抽取的元素类型,...
python豆瓣电影数据爬虫+可视化分析项目源码+部署说明(高分项目)python豆瓣电影数据爬虫+可视化分析项目源码+部署说明(高分项目)python豆瓣电影数据爬虫+可视化分析项目源码+部署说明(高分项目)python豆瓣电影...
在C#编程环境中,开发一个随机抽取数字的抽奖程序是一项常见的任务,特别是在各种活动和竞赛中。本项目基于Microsoft Visual Studio 2005(简称VS2005)进行开发,利用C#语言的强大功能,实现了从一组预设的数字中...
在IT行业中,自动抽取文章中心思想是一项重要的自然语言处理任务,它涉及到文本挖掘、信息检索以及人工智能等多个领域。这项技术的主要目标是从大量的文本数据中快速提取出关键信息,帮助读者理解文章的核心要点,...
【标题】:“一个简单的抽取数字的抽奖小程序” 这个标题揭示了我们讨论的是一款基于编程语言C#开发的小型软件,它的主要功能是进行数字抽取,用以实现抽奖或随机选择等目的。这样的程序通常适用于小型活动,比如...
在本文档中,我们将讨论一个使用 C 语言编写的时域基 2 抽取的 FFT(Fast Fourier Transform)算法程序。该程序的主要功能是对输入信号进行快速傅立叶变换,从而获得信号的频域表示。 FFT 算法的原理 FFT 算法是-...
《PPT抽奖程序-名单抽取》 在许多活动中,抽奖环节常常用来增加互动性和趣味性。这个PPT抽奖程序提供了一种简单而直观的方式来进行名单抽取。以下将详细解析该程序的工作原理和关键代码。 首先,为了运行宏,用户...
本项目“随机数抽取小程序 VC++编写”是一个使用Visual C++编写的程序,它具备手动和自动两种模式,允许用户自定义随机数的范围,以满足各种需求。 首先,我们要理解随机数生成的基础知识。在计算机科学中,由于...
在这个场景中,我们有一个名为"随机抽取程序"的应用,它主要用于教育环境中进行随机点名或者题目选择。这个程序是用Java编程语言编写的,Java是一种广泛使用的面向对象的编程语言,以其跨平台的特性而著名,能够运行...
JAVA随机抽取数名学生程序设计 本文旨在介绍一个使用JAVA语言设计的随机抽取数名学生程序,旨在解决在实际教学场景中需要随机抽取学生的需求。该程序使用了JAVA语言的多种特性,如数组、集合、随机数生成等,实现了...
【EXCEL自定义字段抽取VBA程序】是一个实用的Excel工具,主要针对企业用户,它利用VBA(Visual Basic for Applications)编程语言,允许用户自定义需要抽取的字段,将源数据表中的特定信息高效地提取到目标工作表中...
《中文实体抽取:深入理解ChineseNERMSRA与实体识别技术》 在当今的自然语言处理(NLP)领域,实体抽取是一项至关重要的技术。它旨在从文本中识别并分类出具有特定意义的词汇,如人名、地名、组织名等,这些词汇被...
在网页文本抽取领域,主要的目标是从结构复杂的HTML文档中筛选出纯净、有意义的文本内容,如文章正文、标题、作者信息等。这个源码可能包含了以下关键功能: 1. HTML解析:源码可能使用了自定义的解析器或者第三方...
为了满足这一需求,一款名为【精品小工具】易语言程序随机抽取器软件的简易版工具应运而生。该软件虽然没有进行复杂的特殊处理,却能够满足一般用户的使用需求,不仅操作简单,还充分体现了中文编程语言易语言的便捷...
C语言实现的时域基2抽取的FFT算法程序 本文档提供了一个使用C语言实现的时域基2抽取的FFT(Fast Fourier Transform)算法程序。该程序使用时域基2抽取的方法来计算FFT,具有高效和准确的特点。 FFT算法是信号处理...
在C语言中,随机抽取小程序的设计是通过利用C标准库中的随机数生成函数来实现的。这个程序可以广泛应用于各种场景,例如抽奖、模拟实验、数据分析等。让我们深入探讨一下如何在C语言中构建这样的随机抽取功能。 ...
"微信小程序基本的开发框架抽取"这一主题旨在探讨和解析微信小程序的基础架构和开发流程,帮助开发者理解和掌握其核心概念。 1. **框架介绍**:微信小程序的开发框架是基于JavaScript的,它引入了一种新的声明式...
基于时域抽取法的基二fft源程序!MATLAB语言!
小程序web-view调用H5页面发起小程序抽取微信地址示例代码。 这接口是我熬夜写出来的,可以用于ECtouch的H5发起小程序调用微信收货地址,如果看不懂的话,可以进微信>>发现>>小程序搜索:“春意谷成人用品商城”进...
“小飞侠随机抽取程序”是一款专注于随机选择的软件,它能够随机抽取名字、数字或其他项目,并且保证每个项目被选中的概率均等,从而避免了人为选择带来的偏倚和不公。在教育领域,教师可以使用它进行课堂点名,随机...