代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Python
】
多线程获取腾讯新闻
作者:
/ 发布于
2013/1/8
/
806
# -*- coding: utf-8 -*- import urllib2 import re import os import threading import Queue # 配置信息 pageStart = 1 pageEnd = 3000 root = "E:\\qq.com\\news\\d\\20130104\\" # 正则 def filter_tags(htmlstr): re_cdata=re.compile('//<!\[CDATA\[[^>]*//\]\]>',re.I) #匹配CDATA re_script=re.compile('<\s*script[^>]*>[^<]*<\s*/\s*script\s*>',re.I)#Script re_style=re.compile('<\s*style[^>]*>[^<]*<\s*/\s*style\s*>',re.I)#style re_p=re.compile('<P\s*?/?>')#处理换行 re_h=re.compile('</?\w+[^>]*>')#HTML标签 re_comment=re.compile('<!--[^>]*-->')#HTML注释 s=re_cdata.sub('',htmlstr)#去掉CDATA s=re_script.sub('',s) #去掉SCRIPT s=re_style.sub('',s)#去掉style s=re_p.sub('\r\n',s)#将转换为换行 s=re_h.sub('',s) #去掉HTML 标签 s=re_comment.sub('',s)#去掉HTML注释 blank_line=re.compile('\n+')#去掉多余的空行 s=blank_line.sub('\n',s) return s nQueue = Queue.Queue() class DownloadPage(threading.Thread): def __init__ (self, nQueue): threading.Thread.__init__(self) self.nQueue = nQueue def run (self): while True: page = self.nQueue.get() url = "http://news.qq.com/a/20130104/"+page+".htm" try:#异常跳出 sub_web = urllib2.urlopen(url).read()#打开完整url链接,获取内容 except: print page+' Failed' continue re_keyt = "<h1>.+</h1>"#获取标题,此处的标题不含腾讯新闻的后缀比较方便 title = re.findall(re_keyt,sub_web)#去掉标题左右的html标签 re_keyc = re.compile("<div id=\"Cnt-Main-Article-QQ\".*</div>")#匹配正文内容的正则(个别页面无法获得,见if块) content = re_keyc.findall(sub_web)#获得正文内容 if len(title)==0 or len(content)==0: continue re_content = filter_tags(title[0]+"\r\n"+content[0])#将标题和正文放到一起并去除html标签代码 # 目标路径 path = root+page+".txt" # 收工 if os.path.isfile(path): print 'file exists, go next.' continue else: w=file(path,'w')#根据页面的文件名建立txt文件,并打开为写入方式 w.write(re_content)#写入获得的去除了html标签代码的标题和正文 w.close()#关闭文件 self.nQueue.task_done() def main (): for i in range(pageStart, pageEnd): page = str(i).zfill(6) nQueue.put(page) for i in range(5) : tt = DownloadPage(nQueue) tt.setDaemon(True) tt.start() nQueue.join() main() exit()
试试其它关键字
多线程
同语言下
.
比较两个图片的相似度
.
过urllib2获取带有中文参数的url内容
.
不下载获取远程图片的宽度和高度及文件大小
.
通过qrcode库生成二维码
.
通过httplib发送GET和POST请求
.
Django下解决小文件下载
.
遍历windows的所有窗口并输出窗口标题
.
根据窗口标题调用窗口
.
python 抓取搜狗指定公众号
.
pandas读取指定列
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
贡献的其它代码
Label
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3