这里有新鲜出炉的 Python3 官方中文指南,程序狗速度看过来!
Python 是一种面向对象、解释型计算机程序设计语言,由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。Python 语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是 C/C++)很轻松地联结在一起。
这篇文章主要介绍了 Python 正则抓取网易新闻的方法, 结合实例形式较为详细的分析了 Python 使用正则进行网易新闻抓取操作的相关实现技巧与注意事项, 需要的朋友可以参考下
本文实例讲述了 Python 正则抓取网易新闻的方法。分享给大家供大家参考,具体如下:
自己写了些关于抓取网易新闻的爬虫,发现其网页源代码与网页的评论根本就对不上,所以,采用了抓包工具得到了其评论的隐藏地址(每个浏览器都有自己的抓包工具,都可以用来分析网站)
如果仔细观察的话就会发现,有一个特殊的,那么这个就是自己想要的了
然后打开链接就可以找到相关的评论内容了。(下图为第一页内容)
接下来就是代码了 (也照着大神的改改写写了)。
- #coding=utf-8
- import urllib2
- import re
- import json
- import time
- class WY():
- def __init__(self):
- self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 5.1) ApplewebKit/534.24 (Khtml, like '}
- self.url='http://comment.news.163.com/data/news3_bbs/df/B9IBDHEH000146BE_1.html'
- def getpage(self,page):
- full_url='http://comment.news.163.com/cache/newlist/news3_bbs/B9IBDHEH000146BE_'+str(page)+'.html'
- return full_url
- def gethtml(self,page):
- try:
- req=urllib2.Request(page,None,self.headers)
- response = urllib2.urlopen(req)
- html = response.read()
- return html
- except urllib2.URLError,e:
- if hasattr(e,'reason'):
- print u"连接失败",e.reason
- return None
- #处理字符串
- def Process(self,data,page):
- if page == 1:
- data=data.replace('var replyData=','')
- else:
- data=data.replace('var newPostList=','')
- reg1=re.compile(" \[<a href=''>")
- data=reg1.sub(' ',data)
- reg2=re.compile('<\\\/a>\]')
- data=reg2.sub('',data)
- reg3=re.compile('<br>')
- data=reg3.sub('',data)
- return data
- #解析json
- def dealJSON(self):
- with open("WY.txt","a") as file:
- file.write('ID'+'|'+'评论'+'|'+'踩'+'|'+'顶'+'\n')
- for i in range(1,12):
- if i == 1:
- data=self.gethtml(self.url)
- data=self.Process(data,i)[:-1]
- value=json.loads(data)
- file=open('WY.txt','a')
- for item in value['hotPosts']:
- try:
- file.write(item['1']['f'].encode('utf-8')+'|')
- file.write(item['1']['b'].encode('utf-8')+'|')
- file.write(item['1']['a'].encode('utf-8')+'|')
- file.write(item['1']['v'].encode('utf-8')+'\n')
- except:
- continue
- file.close()
- print '--正在采集%d/12--'%i
- time.sleep(5)
- else:
- page=self.getpage(i)
- data = self.gethtml(page)
- data = self.Process(data,i)[:-2]
- # print data
- value=json.loads(data)
- # print value
- file=open('WY.txt','a')
- for item in value['newPosts']:
- try:
- file.write(item['1']['f'].encode('utf-8')+'|')
- file.write(item['1']['b'].encode('utf-8')+'|')
- file.write(item['1']['a'].encode('utf-8')+'|')
- file.write(item['1']['v'].encode('utf-8')+'\n')
- except:
- continue
- file.close()
- print '--正在采集%d/12--'%i
- time.sleep(5)
- if __name__ == '__main__':
- WY().dealJSON()
以上就是我爬取的代码了。
希望本文所述对大家 Python 程序设计有所帮助。
来源: http://www.phperz.com/article/17/0708/334296.html