昨天用python写了一个天气预报采集,今天趁着兴头写个新闻采集的。

目标是,将腾讯新闻主页上所有新闻爬取下来,获得每一篇新闻的名称、时间、来源以及正文。

接下来分解目标,一步一步地做。

步骤1:将主页上所有链接爬取出来,写到文件里。

根据上一篇文章的方法,可以简单地获取到整个主页的文本内容。

我们都知道html链接的标签是“a”,链接的属性是“href”,也就是要获得html中所有tag=a,attrs=href 值。

查阅了资料,一开始我打算用HTMLParser,而且也写出来了。但是它有一个问题,就是遇到中文字符的时候无法处理。

class parser(HTMLParser.HTMLParser):

def handle_starttag(self, tag, attrs):

if tag == 'a':

for attr, value in attrs:

if attr == 'href':

print value

后来使用了SGMLParser,它就没有这个问题。

class URLParser(SGMLParser):

def reset(self):

SGMLParser.reset(self)

self.urls = []

def start_a(self,attrs):

href = [v for k,v in attrs if k=='href']

if href:

self.urls.extend(href)

SGMLParser针对某个标签都需要重载它的函数,这里是把所有的链接放到该类的urls里。

lParser = URLParser()#分析器来的

socket = urllib.urlopen("http://news.qq.com/")#打开这个网页

fout = file('urls.txt', 'w')#要把链接写到这个文件里

lParser.feed(socket.read())#分析啦

reg = 'http://news.qq.com/a/.*'#这个是用来匹配符合条件的链接,使用正则表达式匹配

pattern = re.compile(reg)

for url in lParser.urls:#链接都存在urls里

if pattern.match(url):

fout.write(url+'\n')

fout.close()

这样子就把所有符合条件的链接都保存到urls.txt文件里了。

步骤2:对于每一个链接,获取它的网页内容。

很简单,只需要打开urls.txt文件,一行一行地读出来就可以了。

也许这里会显得多此一举,但是基于我对解耦的强烈愿望,我还是果断地写到文件里了。后面如果采用面向对象编程,重构起来是十分方便的。

获取网页内容部分也是相对简单的,但是需要把网页的内容都保存到一个文件夹里。

这里有几个新的用法:

os.getcwd()#获得当前文件夹路径

os.path.sep#当前系统路径分隔符(是这个叫法吗?)windows下是“\”,linux下是“/”

#判断文件夹是否存在,如果不存在则新建一个文件夹

if os.path.exists('newsdir') == False:

os.makedirs('newsdir')

#str()用来将某个数字转为字符串

i = 5

str(i)

有了这些方法,将字符串保存到某个文件夹下不同的文件就不再是一件困难的事了。

步骤3:枚举每一个网页,根据正则匹配获得目标数据。

下面的方法是用来遍历文件夹的。

#这个是用来遍历某个文件夹的

for parent, dirnames, filenames in os.walk(dir):

for dirname in dirnames

print parent, dirname

for filename in filenames:

print parent, filename

遍历,读取,匹配,结果就出来了。

我使用的数据提取的正则表达式是这样的:

python 自动编写新闻_Python多篇新闻自动采集相关推荐

  1. python 采集新闻_Python多篇新闻自动采集

    昨天用python写了一个天气预报采集,今天趁着兴头写个新闻采集的. 目标是,将腾讯新闻主页上所有新闻爬取下来,获得每一篇新闻的名称.时间.来源以及正文. 接下来分解目标,一步一步地做. 步骤1:将主 ...

  2. python爬取图文新闻_python爬取新闻需要什么软件

    2017-02-16 回答 需求: 从门户网站爬取新闻,将新闻标题,作者,时间,内容保存到本地txt中. 用到的python模块: import re  # 正则表达式 import bs4  # b ...

  3. python怎么编写流氓软件_Python恶意软件分析入门

    介绍 提升你的 Python 编程技巧可能正在你的待做清单上--就行清理衣橱.粉刷墙壁.拧紧螺丝一样(你知道我在说什么). 通常来说,脚本是跨大多数安全学科的一个实用的工具,编写脚本可以帮助你自动完成 ...

  4. python抢货程序_Python自动化xpath实现自动抢票抢货代码示例

    本篇文章小编给大家分享一下Python自动化xpath实现自动抢票抢货代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 总代码: for i i ...

  5. python怎么编写流氓软件_Python 编写强制性流氓软件, 可表白, 可其它!

    Python 编写强制性流氓软件, 可表白, 可其它! 来我们先看看效果: 用 Python 做了一个最近抖音上非常火的表白神器, 欢迎各位大佬指导 需求: Python3.6 PyQT5 库 不多废 ...

  6. python基本符号怎么打_Python入门篇基础语法

    数据类型初探 int 类型 [整数] float 类型 [小数] str 类型 [字符串] 注:字符串以单引号或者双引号包裹 bool类型 [True] 或 [False] Python标识符 标识符 ...

  7. python自动刷视频_python+adb命令实现自动刷视频脚本案例

    python小白第一次发博客,自己自学了一下写了一个demo,可能语法啥的不够标准,毕竟没有真正学过python 主要用到的是 import os #os包用于运行cmd命令 adb shell #这 ...

  8. python解包操作_python基础篇笔记02 文件操作 序列解包**星号语法

    文件的数据是存放于硬盘上的,因而只存在覆盖.不存在修改这么一说,我们平时看到的修改文件, 都是模拟出来的效果,具体的说有两种实现方式: 方式一:将硬盘存放的该文件的内容全部加载到内存,在内存中是可以修 ...

  9. python实现自动登录软件_Python selenium实现微博自动登录的示例代码

    (一)编程环境 操作系统:Win 10 编程语言:Python 3.6 (二)安装selenium 这里使用selenium实现. 如果没有安装过python的selenium库,则安装命令如下 pi ...

最新文章

  1. JS 把url的参数解析成对象
  2. 计算机网络系统结构分析 pdf,计算机网络(实验三:数据包结构分析).pdf
  3. ospf序列号等问题
  4. Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals)
  5. 信息学奥赛一本通C++语言——1070:人口增长
  6. 社群模式:什么是普通人赚钱的核心秘密
  7. 谁来结束 GUI 程序?| CSDN 博文精选
  8. Redis入门学习笔记--附Redis工具类
  9. 太好玩了!用Python写一个乒乓球游戏!
  10. oracle 12C 创建用户失败 解决方案
  11. “云脉文档管理”微信小程序提供高效的办公体验
  12. React中input输入框中文输入的问题
  13. 怎么在线快速将多张CAD图纸转换成低版本DXF格式?
  14. TO-B类软件产品差异化
  15. Spring Security + JWT实现权限管理
  16. k8s探针检测php,K8S教程(7)使用探针对容器进行健康检查
  17. PHP中使用SHA256,如何在php5.3.0中使用sha256
  18. 微信抽奖java代码_微信小程序活动助手,包括nodejs后台管理系统和java后台接口
  19. java jfm入门_java入门编程解析
  20. 【数据分析day05】Scipy读/写.mat文件,wav,mp3

热门文章

  1. 按书的问题范围scale尺寸进行书箱分类存储
  2. 【Qt Quick】开启cmd控制台查看打印
  3. 创业必备工作(转载)
  4. C++开源游戏推荐,《金庸群侠传》复刻版和3D重制版
  5. 20221231今天的世界发生了什么
  6. 高精度焊接机械臂定位
  7. 怎么使用cmd命令更改文件后缀
  8. ubuntu18.04 cartographer安装与使用
  9. excel未保存强制关闭计算机,电脑重启excel没保存怎么办
  10. 传智专修学院推出颠覆式办学模式,专注实用技能型人才培养