python爬取网页表格.pdf
《python爬取网页表格.pdf》由会员分享,可在线阅读,更多相关《python爬取网页表格.pdf(25页珍藏版)》请在咨信网上搜索。
1、python爬取网页表格篇一:python抓取网页数据用python抓取页面并进行处理2009-02-19 15:09:50|分类:Python|标签:无|字号 订阅主要目的:抓取某个网页的源代码,把里面需要的数据进 行处理,并保存到数据库中。已经实现了抓取页面并读取数 据。步骤一、抓取页面,这一步很简单,引入urllib,用urlopen 打开网址,并用read()方法读取数据。为了方便测试,用本 地文本文件代替抓取网页步骤二、处理数据,如果页面代码比较规范标准,可以用 HTMLParser进行简单处理,只是具体情况需要具体分析,感觉还是用正则比较好一些,顺便练习一下刚学习的正则表 达式。其
2、实正则也是一种比较简单的语言,其中符号比较 多,有点晦涩难懂,只能是多加练习,多加实践了。步骤三、把处理的数据保存到数据库中,用pymssql就可 以处理,这里只是简单的保存到文本文件中。扩展下去,利用这个功能还可以实现抓取整个网站的图片、自动声称site map文件等功能。下一个任务,研究python 的socket功能#coding:gbkimport urllibimport re#pageiurllib.urlopen(/index.html)#data=pagenread()#pageEclose()f=open(rD:2.txt)data=f.read()f.close()#处理数
3、据p=pile('(?<=class=one.).+?(?=</div</div)',re.I|re.S)m=p.findall(data)s=for datan in m:#继续处理数据,取出标题、简介、图片和链接地址p_title=pile('(?<=<h2.).+?(?=</h2)',re.I|re.S)2p_url=pile('(?<=href=.).+?(?=)',re.I|re.S)p_summar=pile('(?(<=<p.).+?(?=</p)(',re
4、.I|re.S)p_image=pile('/eshop/images/.+?(?=)',re.I|re.S)s=s+标题:+p_title.search(datan).group()+rn+f+p_summa nsearc h(datan).gro up()+rn+图 片+p_image.search(datan).group()+rn+p_urLsearch(datan).group()+rnf=open(rD:2.txt,'w')f.write(s)f.close()链接地址介:用Python脚本获取实时股市信息2006-12-15 13:47IE查看股市
5、信息太过招摇,决定写个Python脚本抓取相 关信息,小巧便捷。1.先写段Python脚本抓取股票行情查询页面。这个很简 3单。发现个股实时行情数据都是写在javascript文件当中。2.提取该javascript文件URL,写Python脚本抓取该文 件。读取其内容,做字符串处理,提取股价,涨幅等信息。搞定。3.针对部分需要设置HTTP代理才可访问网络的需求,通过 urnib.open('*',proxies='*')设置代理,非常方便。4.通过对javascript文件URL的分析,其文件名形式是 股票代码.js。建立一个配置文件,提供所关注的股票代码。用
6、Python脚本实现读取配置信息,定时读取所需实时信息。5.定义每日行情格式,以XML形式存储。6.日后可以Python脚本实现读取存储的行情信息生成报 表,K线等图形信息。篇二:python完成网页抓取的工作python完成网页抓取的工作python语言是自省的,就是说他的语言机制能保证他可 以充分的自己描述自己,下面我就借助自省,用程序自身的说 明来解释程序的逻辑结构,版本历史,以及设计时的想法.#encoding:UTF-8'''This is geturl.Wirtten by yuzebin:yuzebin AT 4Important:this script
7、is running in cygwin or linux,if you run at windows you need the curl and wget for windows.'''class='''CGetPage is charge of to get a url,it have three methods to get a page:urllib,curl and wget;CParsePage is charge of to parse the page,and return the match;CGetMatch is the f
8、orcad class to wrap the CGetPage and CParsePage.'''history='''2006.07.10 version 0.0.0.9:Publish this code to internet,;-)2006.06.27 version 0.0.0.7:refrectoring class CParsePage:return re.match onlyrefrectoring class CGetCount:rename to CGetMatch2006.06.26 version 0.0.0.3:mo
9、dify class CParsePage,return re.match2006.06.22 version 0.0.0.2:add class CGetCountthis version is the first workable version.add cnsky.2006.06.21 initial version 0.0.0.1:5add class CGetPage and CParsePagecannot work;-)'''importstring,re,os,fnmatch,sys,copy,gzip,time,datetime,urllibfrom
10、types import*isDebugMode=FalsefuncUrlRead=lambda url:urllib.urlopen(url).read()def funcOutputMessage(msg):print str(msg)def funcDebuglnfo(msg):if(isDebugMode=True):print str(msg)class CGetPage:def_init_(self,url):if self.urlCheck(url)=True:self.url=urlelse:return Nonedef urlCheck(self,url):#todo,che
11、ck the url is valid urLreturn True6def getPage(self):self.page=funcUrlRead(self.url)def curlPage(self):#call curl to get a page,this requir curl is installed.self.page=os.popen(curl-A/-s/+self.url+/).read()def setP ath(self,pat h):self.path=pathdef wgetPage(self):#call wget to download a url to path
12、,this requir wget is installed.os.chdir(self.path)os.system('wget-c'+self.url)class CParsePage:def _init_(self,rule,page):if(self.ruleCompile(rule)!=False):self.page=pageelse:return Nonedef ruleCompile(self,rule):#compile the ruletry:self.rule=pile(rule)7except:return Falsedef parsePage(self
13、):self,match=re.search(self.rule,unicode(self.page,self.getCharset(self.page)funcDebugInfo(type(self.match)def getCharset(self,string):import chardet#todo:automatic discern the charsetcharset=chardet.detect(string)return charset'encoding'class CGetMatch:def_init_(self,url,rule):self.url=urls
14、elf,rule=ruleself.cgetpage=CGetPage(self.url)se If.cgetpage.getP age()self.page=self.cgetpage.pageself.cparsepage=CParsePage(self.rule,self.cgetpage.page)def getMatch(self,url,rule):8self.url=urlself,rule=ruleself.cgetpage.url=urlself.cparsepage.rule=rulese If.cgetpage.getP age()self.page=self.cgetp
15、age.pagese If.cpa rsepage.page=self.cgetpage.pagese If.cpa rsepage.pa rsePage()self,match=se If.cpa rsepage.matchif_name_='_main_':funcOutputMessage('=This is a get urlscript=')runTest()def runTest():#initializationccount=CGetMatch('.cn','')i=0#1try:site name='hua
16、jun'rule='hit/587/=/'47588,(0-9+)'url='/soft/23265.html'9i+=1ccount.getMatch(url,rule)funcOutputMessage(str(i).rjust(2)+';'+sitename.ljust(12)+':'+str(ccount.match.group(l)except:pass篇三:抓取网页数据如何抓取网页数据、分析并且去除Html标签(C#)2008年 09月20日星期六 下午07:25首先将网页内容整个抓取下 来,这个我就不说
17、了,不是本次话题的重点。假设抓取的数 据放在RecvBuffer这个byte口中(数据从网络上传输过来时 不是字符串的形式而是byte),那么我们的第一步就是将 RecvBuffer转化为String,以便于对其操作,实例如下:/将接收到的数据增加到响应字符串中strResponse+=Encoding.ASCILGetString(RecvBuffei;0,nBytes);strResponse即是保存数据的字符串,此处用系统自 带 的 System.Text.Encoding 的 方法转 化 RecvBuffer,GetString的第一个参数RecvBuffer就是我们的原始数据,即包含
18、需要解码的字节序列的字节数组;第二个参数。代表 第一个要解码的字节的索引,一般就从0开始;第三个参数 nBytes为要解码的字节数,可以自己调整。10得到了数据的字符串形式,然后可以对网页进行解析了(其实就是对字符串的各种操作和正则表达式的应用)。下 面我以几个例子来说明对网页数据的解析:/解析页面,查找链接/此处尚需扩展,还有某些形式的链接不被识别string strRef=(href|HREF|src|SRC|action|ACTION|Action)*=* 9;hCollection matches=newRegex(strRef).Matches(strResponse);str
19、Status+=找到I:+matches.Count+个链接rn;上面的 例子将网页中的链接解析出来,strRef变量表示了正则表达 式的模式,变量matches表示符合匹配的项目的集合,后面 的 Regex(strRef).Matches(strRes(转 载于:wWW.xlTkWJ.Com 小 龙文 档 网:python爬取网页表 格)ponse)就是创建正则规则使得strResponse里符合strRef 模式的字符串都返回。然后调用matches的变量就可以取得 各种信息了。当然,这里只能识别一些基本的链接形式,像script中的 链接和一些不带“,的链接都没有被支持,这个的扩展还是蛮
20、 简单的。再举几个更简单点的解析的例子,大家学习学习:获取标题itMatch Title Match=Regex.Match(strResponse,<title(egexOptions.IgnoreCase|RegexOptions.Multiline);title=TitleMatch.Gro ups 1.Va lue;获取描述信息Match Desc=Regex.Match(strResponse,&It;Meta name=DESCRIP TION content=(strdesc=Desc.Groupsl.Value;获取网页的大小size=strResponse.Length
21、;-割好了,下面说一下如何去除Html标签,这个想必有很 多初学者很需要。其实还是正则表达式和字符串基本操作的 应用,由于这个功能还是比较常用的,所以例子写成了函数,便于调用:1*1111<summaryIII将Html标签转化为空格III</summaryIII&It;pa ram name=strHtml 待转化的字符串</paramIII&It;returns 经过转化的字符串</returnsprivate string stripHtml(string strHtml)12Regex objRegExp=new Regex(<(.|n)+?);strin
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- python 网页 表格
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【曲****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【曲****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。