python python 入门学习之网页数据爬虫cnbeta文章保存

需求驱动学习的动力。

因为我们单位上不了外网所以读新闻是那么的痛苦,试着自己抓取网页保存下来,然后离线阅读。今天抓取的是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并保存到当前文件夹下面,名字用文章名命名。

转载于:https://www.cnblogs.com/clyzly/p/4249091.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值