原文地址:http://www.cnblogs.com/rails3/archive/2012/08/14/2636780.htm

思路:

1.抓取腾讯新闻列表页面: http://news.qq.com/

2.提取详细页面的url:http://news.qq.com/a/20120814/000070.htm

3.在详细页中提取新闻标题和内容

4.去除提取内容中的html标签,生成txt文档

代码:

 #coding=utf-8
import sys
import urllib2
import re
import os def extract_url(info):
rege="http://news.qq.com/a/\d{8}/\d{6}.htm"
re_url = re.findall(rege, info)
return re_url def extract_sub_web_title(sub_web):
re_key = "<title>.+</title>"
title = re.findall(re_key,sub_web)
return title def extract_sub_web_content(sub_web):
re_key = "<div id=\"Cnt-Main-Article-QQ\".*</div>"
content = re.findall(re_key,sub_web)
return content 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)#将<p>转换为换行
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 #get news
content = urllib2.urlopen('http://news.qq.com').read() #get the url
get_url = extract_url(content) #generate file
f = file('result.txt','w')
i = 15 #新闻起始位置,前面几条格式不一致
flag = 30
while True:
f.write(str(i-14)+"\r\n") #get the sub web title and content
sub_web = urllib2.urlopen(get_url[i]).read()
sub_title = extract_sub_web_title(sub_web)
sub_content = extract_sub_web_content(sub_web) #remove html tag
if sub_title != [] and sub_content != []:
re_content = filter_tags(sub_title[0]+"\r\n"+sub_content[0])
f.write(re_content.decode("gb2312").encode("utf-8"))
f.write("\r\n")
else:
flag = flag +1 if i == flag:
break i = i + 1
print "Have finished %d news" %(i-15)
f.close()

说明:

urllib2模块:进行网页内容抓取
re模块:进行正则表达式提取
decode("gb2312").encode("utf-8"):因为提取网页的编码是gb2312所以要解码后在编码到utf-8显示
filter_tags:去除提取的内容的html标签,baidu可以找到这个函数,又修改了下

调试中遇到的问题:

1.Table 'polls.django_admin_log' doesn't exist
今天没事调试一下DJANGO框架的时候官方的例子出现如下错误在这记录一下吧~!

原因:数据库未同步

解决方法:python manage.py syncdb

2.IndentationError: unexpected indent python

原因:缩进错误

解决方法:删除缩进,统一用tab,注意tab设置为4空格

3.[Errno 9] Bad file descriptor

原因:读文件用了 fileopen(filename,”w”)

解决方法:fileopen(filename,”r”)

4. IndexError: list index out of range

原因:for i in range(len(List))

del len(List)

在动态删除List过程中越界

解决办法:不要动态删除,采用两个List操作

5.TypeError: expected string or buffer
原因:re_h=re.compile('</?\w+[^>]*>')
s=re_h.sub('',str)

传入的str是list变量导致出错

解决办法:传入str类型变量

附:我的vim设置

要在 ~ 目录下(即用户根目录)新建 .vimrc,这样对其它用户不影响

syntax on
set fileencodings=utf-8,cp936,big5,euc-jp,euc-kr,latin1,ucs-bom
set fileencodings=utf-8,gbk
set ambiwidth=double
set langmenu=zh_CN.UTF-8
set mouse=a
set nu
set foldmethod=indent
set sw=4
set ts=4
set smarttab
set spell
set tw=78
set lbr
set fo+=mB
set t_Co=256 //颜色覆盖问题,默认的效果太差
colorscheme default //配色方案

l

syntax on
set fileencodings=utf-8,cp936,big5,euc-jp,euc-kr,latin1,ucs-bom
set fileencodings=utf-8,gbk
set ambiwidth=double
set langmenu=zh_CN.UTF-8
set mouse=a
set nu
set foldmethod=indent
set sw=4
set ts=4
set smarttab
set spell
set tw=78
set lbr
set fo+=mB
set t_Co=256          //颜色覆盖问题,默认的效果太差
colorscheme  default   //配色方案

Python 实现腾讯新闻抓取的更多相关文章

  1. Python3从零开始爬取今日头条的新闻【二、首页热点新闻抓取】

    Python3从零开始爬取今日头条的新闻[一.开发环境搭建] Python3从零开始爬取今日头条的新闻[二.首页热点新闻抓取] Python3从零开始爬取今日头条的新闻[三.滚动到底自动加载] Pyt ...

  2. python爬虫beta版之抓取知乎单页面回答(low 逼版)

    闲着无聊,逛知乎.发现想找点有意思的回答也不容易,就想说要不写个爬虫帮我把点赞数最多的给我搞下来方便阅读,也许还能做做数据分析(意淫中--) 鉴于之前用python写爬虫,帮运营人员抓取过京东的商品品 ...

  3. 利用python脚本(xpath)抓取数据

    有人会问re和xpath是什么关系?如果你了解js与jquery,那么这个就很好理解了. 上一篇:利用python脚本(re)抓取美空mm图片 # -*- coding:utf-8 -*- from ...

  4. Python爬虫实战四之抓取淘宝MM照片

    原文:Python爬虫实战四之抓取淘宝MM照片其实还有好多,大家可以看 Python爬虫学习系列教程 福利啊福利,本次为大家带来的项目是抓取淘宝MM照片并保存起来,大家有没有很激动呢? 本篇目标 1. ...

  5. Python爬虫实战六之抓取爱问知识人问题并保存至数据库

    大家好,本次为大家带来的是抓取爱问知识人的问题并将问题和答案保存到数据库的方法,涉及的内容包括: Urllib的用法及异常处理 Beautiful Soup的简单应用 MySQLdb的基础用法 正则表 ...

  6. 一次Python爬虫的修改,抓取淘宝MM照片

    这篇文章是2016-3-2写的,时隔一年了,淘宝的验证机制也有了改变.代码不一定有效,保留着作为一种代码学习. 崔大哥这有篇>>小白爬虫第一弹之抓取妹子图 不失为学python爬虫的绝佳教 ...

  7. Python爬虫之使用正则表达式抓取数据

    目录 匹配标签 匹配title标签 a标签 table标签 匹配标签里面的属性 匹配a标签里面的URL 匹配img标签里的 src 相关文章:Linux中的正则表达式 Python中的正则表达式 实例 ...

  8. Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容

    1,引言 在Python网络爬虫内容提取器一文我们详细讲解了核心部件:可插拔的内容提取器类gsExtractor.本文记录了确定gsExtractor的技术路线过程中所做的编程实验.这是第二部分,第一 ...

  9. python:利用asyncio进行快速抓取

    web数据抓取是一个经常在python的讨论中出现的主题.有很多方法可以用来进行web数据抓取,然而其中好像并没有一个最好的办法.有一些如scrapy这样十分成熟的框架,更多的则是像mechanize ...

随机推荐

  1. Spring 学习笔记之整合Hibernate

    Spring和Hibernate处于不同的层次,Spring关心的是业务逻辑之间的组合关系,Spring提供了对他们的强大的管理能力, 而Hibernate完成了OR的映射,使开发人员不用再去关心SQ ...

  2. 《A First Course in Abstract Algebra with Applications》-chaper1-数论-关于素数

    由于笔者在别的专栏多次介绍过数论,这里在<抽象代数基础教程>的专栏下,对于chaper1数论这一章节介绍的方式不那么“入门”. 首先来介绍一个代数中常用也是非常重要的证明方法:数学归纳法. ...

  3. unity ugui消息透传

    公司要做一个这东西. A是滑动区域,ScrollRect组件. B是各种选项. C是拾取到鼠标(或触点)的选项. D是拖放区域. 大概要求是这样. 因为B的条目很多,放在A里可以滑动查看.如果要选择一 ...

  4. 省队集训 Day1 残缺的字符串

    [题目大意] 双串带通配符匹配. $|S|, |T| \leq 5 * 10^5$ TL: 2s [题解] 参考bzoj 4503 可以设计如下函数 A[i] * B[i] * (A[i] - B[i ...

  5. 【HDU】3068 最长回文

    [算法]manacher [题解][算法]字符串 #include<cstdio> #include<algorithm> #include<cstring> us ...

  6. DotNETCore 学习笔记 MVC视图

    Razor Syntax Reference Implicit Razor expressions <p>@DateTime.Now</p> <p>@DateTim ...

  7. TOJ 1049 Jesse's problem (最短路 floyd)

    描述 All one knows Jesse live in the city , but he must come to Xiasha twice in a week. The road is to ...

  8. vue_真机调试页面

    使用vue开发也有一段时间,是说我太懒了,还是说太懒了.得总结总结的. 之前在开发的时候都是,npm run build把页面打包后再上传到代码库上线用手机看页面效果.样式调整,嗯,很麻烦很傻的. 今 ...

  9. ie8下input文字偏上select文字偏下

    1.ie8下input文字偏上 正常情况下input的显示情况如下 当设置input的高度时,就会出现文字不垂直居中偏上的情况,如图 解决方案 强input的行高line-height与其高度设置一致 ...

  10. js中的indexOf

    1.概述 indexOf大小写敏感,其中的O要大写 2.对于字符串而言 indexOf返回字符串第一次出现的位置,若没有出现返回-1 var str = "hello world" ...