需求驱动学习的动力。

因为我们单位上不了外网所以读新闻是那么的痛苦,试着自己抓取网页保存下来,然后离线阅读。今天抓取的是cnbeta科技新闻,抓取地址是http://m.cnbeta.com/wap/index.htm?page=1,咱们需要抓取的是前5页就行了。代码如下:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import urllib2,re,time,json
import sys
from bs4 import BeautifulSoup
reload(sys)
sys.setdefaultencoding('utf-8')
n=0
f = open('cnbeta.txt','a')
headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
mainurl="http://m.cnbeta.com/wap" for i in range(1,5):
add='http://m.cnbeta.com/wap/index.htm?page='+str(i) req = urllib2.Request(add, headers=headers)
wb=urllib2.urlopen(req).read()
soup=BeautifulSoup(wb) file=open(str(i)+'cnbetamain.html','a')
file.write(wb)
elv1ment=soup.find_all('div',{'class':'list'})
for elv in elv1ment:
n=n+1
url=elv.find('a',href=True).get('href')
name=elv.find('a',href=True).get_text()
print name + ','+'http://m.cnbeta.com'+url
f.write(str(n)+','+name + ','+'http://m.cnbeta.com'+url+'\n')
try:
html =urllib2.urlopen(urllib2.Request('http://m.cnbeta.com'+url, headers=headers)).read()
filename=name+'.html'
file=open(filename,'a')
file.write(html)
except:
print 'NOT FOUND'
#print filename time.sleep(1)
f.close()
file.close()
print 'OVER'

首先需要抓取页面,循环地址,这个地方需要注意的是因为很多网站禁止机器访问所以需要headers,万能的

headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}

拿到主页数据后需要找到此主页包含的文章及文章地址,用beautifulsoup访问处理html,beautifulsoup需要对网页进行分级处理,有head body div title href几种模式,这里需要用的是 div class="list" 。找到文章地址后打开url并保存到当前文件夹下面,名字用文章名命名。

python python 入门学习之网页数据爬虫cnbeta文章保存的更多相关文章

  1. python python 入门学习之网页数据爬虫搜狐汽车数据库

    自己从事的是汽车行业,所以首先要做的第一个程序是抓取搜狐汽车的销量数据库(http://db.auto.sohu.com/cxdata/): 数据库提供了07年至今的汽车月销量,每个车型对应一个xml ...

  2. 第15.25节 PyQt(Python+Qt)入门学习:Model/View开发实战--使用QTableView展示Excel文件内容

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 在前面的订阅专栏<第十九章.Model/View开发:QTableView的功能及属 ...

  3. python 入门实践之网页数据抓取

    这个不错.正好入门学习使用. 1.其中用到 feedparser: 技巧:使用 Universal Feed Parser 驾驭 RSS http://www.ibm.com/developerwor ...

  4. 第15.37节 PyQt(Python+Qt)入门学习:containers容器类部件QMdiArea多文档界面部件详解及编程开发案例

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.引言 老猿在前期学习PyQt相关知识时,对每个组件的属性及方法都研 ...

  5. 第15.18节 PyQt(Python+Qt)入门学习:Model/View架构中视图Item Views父类详解

    老猿Python博文目录 老猿Python博客地址 一.概述 在PyQt图形界面中,支持采用Model/View架构实现数据和界面逻辑分离,其中Model用于处理数据存储,View用于界面数据展现,当 ...

  6. 【python】入门学习(十)

    #入门学习系列的内容均是在学习<Python编程入门(第3版)>时的学习笔记 统计一个文本文档的信息,并输出出现频率最高的10个单词 #text.py #保留的字符 keep = {'a' ...

  7. 第15.41节、PyQt(Python+Qt)入门学习:输入部件QComboBox组合框功能详解

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 Designer中输入工具部件中的Combo Box组合框与 ...

  8. 第15.38节 PyQt(Python+Qt)入门学习:containers容器类部件QDockWidget停靠窗功能详解

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 QDockWidget类提供了一个可以停靠在QMainWin ...

  9. 第15.36节 PyQt(Python+Qt)入门学习:containers容器类部件QFrame框架部件介绍

    一.概述 容器部件就是可以在部件内放置其他部件的部件,在Qt Designer中可以使用的容器部件有如下: 容器中的Frame为一个矩形的框架对象,对应类QFrame,QFrame类是PyQt中带框架 ...

随机推荐

  1. Broadcom以太网交换芯片培训

      目录 1.交换芯片架构....................................................................................... ...

  2. IS A 和 HAS A的区别

    IS A:一般是用作继承或者接口类.比如:中国人和外国人都是人,重点在:是一个... . HAS A:一般用作对象和他的成员的从属关系.比如:中国人和外国人都有眼睛.耳朵.嘴巴.重点在:有一个... ...

  3. WIn7系统下 打开.exe程序出现已停止工作关闭程序之解决办法

    新装WIN7系统出现  .NET组建没有安装  可到官网下载安装 NETFx4.0 运行MVB 上位机SIM.EXE出现应用程序已停止工作问题 解决办法: 需关闭WIN7 DEP  如下 开始-运行( ...

  4. Centos下安装Mongodb

    转自:http://nnzhp.cn/article/10/ Mongodb是一种nosql类型的数据库,高性能.易部署.易使用的特点在IT行业非常流行. 下面介绍一下mongodb的安装方式,这里我 ...

  5. 【转载】new和malloc的区别

    本篇随笔为转载,原贴地址:C++中new和malloc的十点区别. 前言 几个星期前去面试C++研发的实习岗位,面试官问了个问题: new与malloc有什么区别? 这是个老生常谈的问题.当时我回答n ...

  6. {Reship}{Code}{CV}

    UIUC的Jia-Bin Huang同学收集了很多计算机视觉方面的代码,链接如下: https://netfiles.uiuc.edu/jbhuang1/www/resources/vision/in ...

  7. Python全栈开发day9

    一.面向对象进阶 1.利用python反射查看面向对象成员 对于对象:反射既可以找对象,类的成员 对于类:反射只能找类中的成员 2.利用反射操作模块(查找类,创建对象,查找对象中字段) 1 2 3 4 ...

  8. 转载:java程序打包成jar 配置文件信息路径

    一个普通的java project,里面引用了config.properties配置文件,将项目打成Runnable jar,然后将config.properties放到打包后的jar路径下,执行该j ...

  9. 《IT蓝豹》高仿花田ios版标签移动效果

    高仿花田ios版标签移动效果,长按每一个item拖动到自己想要位置后,后面位置移动补全效果 . 本项目适合研究gridview拖拽效果的朋友下载. 学习android动画特效. 本项目主要靠DragG ...

  10. Java 名词

    Plain Ordinary Java Object    pojo  简单java对象 Constant   常量 Business Object   BO  业务对象 Framework  框架