正则匹配牛刀小试——一键抓取奇虎360新闻信息
2014-03-30 16:31
260 查看
继续爬虫的学习,为了致敬
http://blog.csdn.net/pleasecallmewhy/article/details/8932310 中why大神的糗事爬虫,我做了一个奇虎新闻的小爬虫,亲测可试,但是我这个爬虫还是单线程的,而且抓取的量也不是很多,而且是最基本的url特性抓取,还没有能力抓取url不变的网站消息。
首先说一下我要抓取的网站:360新闻搜索 - 搜一下,知天下 ,通过观察其url,不难看出来是
http://sh.qihoo.com/类别/index_页数.html 的结构,隐藏只需要把它抓取回来,依次用正则的方式匹配就行,废话不多说,上码。
就这样,请多多指教!
http://blog.csdn.net/pleasecallmewhy/article/details/8932310 中why大神的糗事爬虫,我做了一个奇虎新闻的小爬虫,亲测可试,但是我这个爬虫还是单线程的,而且抓取的量也不是很多,而且是最基本的url特性抓取,还没有能力抓取url不变的网站消息。
首先说一下我要抓取的网站:360新闻搜索 - 搜一下,知天下 ,通过观察其url,不难看出来是
http://sh.qihoo.com/类别/index_页数.html 的结构,隐藏只需要把它抓取回来,依次用正则的方式匹配就行,废话不多说,上码。
#!/usr/bin/env python #-*-coding:utf-8-*- #--------------------------------------- # 程序:奇虎360新闻爬虫 # 文件名:Qihoo360.py # 作者:sysublackbear # 日期:2014-03-30 # 语言:Python # 功能:将360中的新闻,链接及摘要输出并且保存到本地文件 #--------------------------------------- import urllib2 import urllib import re import string #定义新闻的标签 tags = ['china','world','mil','ent','sports',\ 'internet','tech','finance','house','auto','edu','game',\ 'lady','health','society'] class Qihoo360News: #构造函数 def __init__(self): self.start = 1 #默认开始从第一页开始 self.end = 5 #默认结束页还是1 #把某一页的标题和连接都放到字典上 def getPage(self,tag,start,end): if tag not in tags: print '你所找的类别不存在!' return if end > 5: end = 5 url = "http://sh.qihoo.com/"+tag+"/" intro = '以下是'+tag+'抓取的结果' print intro for i in range(start,end+1): f = open('/home/dzhwen/python文件/Homework/urllib/qihoo/qihoo_'+tag+'_page_'+str(i)+'.txt','w+') id = '第'+str(i)+'页' print id.center(40) f.write(id.center(40)+'\n') if i == 1: myurl = url + "index.html" else: myurl = url + "index_" + str(i) + ".html" Response = urllib2.urlopen(myurl) Page = Response.read() myItems = re.findall('<div class="hd">.*?<h2><a href="(.*?)" target="_blank">(.*?)</a></h2>.*?<div class="bd">.*?<p>(.*?)<a',Page,re.S) #其中,re.S为多行匹配模式 #输出同时写入文本 temp = '*******************************************' for item in myItems: print temp f.write(temp + '\n') print '标题:',item[1] f.write('标题:'+item[1]+'\n') print 'From:',item[0] f.write('From:'+item[0]+'\n') print '摘要:',item[2] f.write('摘要:'+item[2]+'\n') print temp f.close() if __name__ == '__main__': qihoo = Qihoo360News() menu=""" 请选择要抓取的类别: 1——国内;2——国际;3——军事;4——娱乐;5——体育;6——互联网;7——科技;8——财经; 9——房产;10——汽车;11——教育;12——游戏;13——女性;14——健康;15——社会; 或者:?(慎用!!) 一键全抓取??(A) """ print menu tag = raw_input("请选择:") if tag != 'A': start = raw_input("请选择开始页数(1——5):") end = raw_input("请选择结束页数(1——5):") qihoo.getPage(tags[int(tag)-1],int(start),int(end)) else: for item in tags: qihoo.getPage(item,1,5)
就这样,请多多指教!
相关文章推荐
- php使用pthreads v3多线程的抓取新浪新闻信息
- 正则表达式相关:C# 抓取网页类(获取网页中所有信息)
- 利用acl_master的http库进行聚合数据新闻信息的数据抓取
- 纯js编写验证信息提示正则匹配数字,字母,空值
- 正则表达式相关:C# 抓取网页类(获取网页中所有信息)
- C#使用正则表达式抓取网站信息示例
- SpringCloud系列九:SpringCloudConfig 基础配置(SpringCloudConfig 的基本概念、配置 SpringCloudConfig 服务端、抓取配置文件信息、客户端使用 SpringCloudConfig 进行配置、单仓库目录匹配、应用仓库自动选择、仓库匹配模式)
- 飞鸽传书2007匹配蜘蛛索引抓取信息
- 正则表达式相关:C# 抓取网页类(获取网页中所有信息)
- 正则表达式相关:C# 抓取网页类(获取网页中所有信息)
- Java中正则表达式、模式匹配与信息抽取
- Python正则抓取新闻标题和链接的方法示例
- php正则技巧,抓取、匹配中文、任意字符
- 安卓新闻客户端编写(一) JSOUP抓取网页信息
- 正则表达式相关:C# 抓取网页类(获取网页中所有信息)
- asp.net 初步入门使用正则抓取网页信息
- python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息,抓取政府网新闻内容
- 安卓新闻客户端编写(一) JSOUP抓取网页信息
- js正则实现从一段复杂html代码字符串中匹配并处理特定信息