Python 抓取网页 (一)
来源:互联网 发布:js 设置radio被选中 编辑:程序博客网 时间:2024/04/30 11:33
最近想抓取学校的主页新闻,然后通过服务器端发送给android平台手机.
本程序设计思路,python抓取数据,利用thrift远程调用供android手机上的java程序使用.
(1),抓取页面.
python数据抓取方法很简单,urllib2的函数接口就可以使用,至于网络上说到的request请求,我还没有研究,这里就不讨论了.
url = 'http://www.gucas.ac.cn/site/158'#暴露了自己的学校.#连接网络print "开始连接ucas新闻网" #彻底暴露了.req = urllib2.Request(url) #发送请求,这句其实可以不要的.webfile= urllib2.urlopen(req,timeout=10) #这句是关键,远程连接url,设置最大连接时间.webcontext = webfile.read() #网络字符串读入.注意文本格式是unicode
注意:这里python执行上述要求必须是sudo执行.windows至于怎么执行,我还没有研究.
(2),页面分析
页面分析的方法总得来说两大类,一类是第三方的库,另一类是re模式匹配的方法.
其中第三方的库有BeautifulSoup和HTMLParser,两个库据说都很好用的.怎么抉择呢,抓取页面多条信息,可以用它们,很快.抓取特定的某一部分连接,匹配更快.
说说re库吧.就是字符串匹配的方法.我只想找新闻的连接.一般网站开发人员,肯定会把新闻放在特定的url下.不然编程代码太多.
废话不多说.来代码.
abst = re.compile(r'/site/158\?u=.*?\"',re.DOTALL).findall(webcontext)print len(abst)for i in range(0,len(abst)):web_path = 'http://www.gucas.ac.cn'+abst[i][:-1]print "启动线程 web:"+web_paththread.start_new_thread(getDetail,(web_path,))#处理每个网页的内部信息time.sleep(8)
re的方法有很多,最要三个.search,match和compiler,前两个返回的是对象.后一个返回的是list.所以用for循环.至于匹配模式怎么写.(点我看匹配模式).得到的href多了一个",所以利用[]操作,去掉最后个字符.最后是启动线程处理每个url.至于内部网页信息怎么处理.这里其实还是重复同样的操作.就不在这里多写了.
读取文本信息遇到的问题,比如这一段
<P style="TEXT-INDENT: 2em"><FONT face=宋体>本报北京9月3日电(记者邱晨辉)今天,中国科学院大学(以下简称国科大)开学典礼在雁栖湖校区举行,这标志着建设10年的国科大雁栖湖校区正式启用。</FONT></P>
这是匹配出来的信息,有的内容没有FONT这一行,多做一个判断?这样代码的就不优美了.还是考虑利用beatifulsoup进行呢?
- Python 抓取网页 (一)
- Python学习之网页抓取(一)
- Python实现抓取网页信息(一)
- python抓取网页(一)--获得网页链接
- 使用python抓取网页
- Python抓取中文网页
- python抓取网页图片
- Python抓取中文网页
- Python抓取中文网页
- python 抓取网页代码
- [Python]网页信息抓取
- Python抓取网页
- Python抓取网页链接
- python抓取网页
- python网页抓取
- Python抓取中文网页
- python分布式抓取网页
- python抓取网页图片
- UVA12583 Memory Overflow
- DIV实现input垂直居中 兼容IE6和Firefox
- 多Activity时的跳转流程控制
- TCP/IP 协议简单分析
- LR 事务!
- Python 抓取网页 (一)
- 网站变灰代码
- T-SQL查询高级—SQL Server索引中的碎片和填充因子
- 数据库大数据BLOB类型转换文本
- 兼容ie6,ie7以及firefox的css透明滤镜
- 110304 Crypt Kicker II
- XMPP协议一
- 《火球——UML大战需求分析》(第2章 耗尽脑汁的需求分析工作)——2.2 持续进化的客户需求
- 兼容IE6和Firefox的PNG背景透明CSS代码