热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

抓取网易新闻的python代码示例

这篇文章主要介绍了Python正则抓取网易新闻的方法,结合实例形式较为详细的分析了Python使用正则进行网易新闻抓取操作的相关实现技巧与注意事项,需要的朋友可以参考下
这篇文章主要介绍了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(" \[")
    data=reg1.sub(' ',data)
    reg2=re.compile(&#39;<\\\/a>\]&#39;)
    data=reg2.sub(&#39;&#39;,data)
    reg3=re.compile(&#39;
&#39;) data=reg3.sub(&#39;&#39;,data) return data #解析json def dealJSON(self): with open("WY.txt","a") as file: file.write(&#39;ID&#39;+&#39;|&#39;+&#39;评论&#39;+&#39;|&#39;+&#39;踩&#39;+&#39;|&#39;+&#39;顶&#39;+&#39;\n&#39;) 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(&#39;WY.txt&#39;,&#39;a&#39;) for item in value[&#39;hotPosts&#39;]: try: file.write(item[&#39;1&#39;][&#39;f&#39;].encode(&#39;utf-8&#39;)+&#39;|&#39;) file.write(item[&#39;1&#39;][&#39;b&#39;].encode(&#39;utf-8&#39;)+&#39;|&#39;) file.write(item[&#39;1&#39;][&#39;a&#39;].encode(&#39;utf-8&#39;)+&#39;|&#39;) file.write(item[&#39;1&#39;][&#39;v&#39;].encode(&#39;utf-8&#39;)+&#39;\n&#39;) except: continue file.close() print &#39;--正在采集%d/12--&#39;%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(&#39;WY.txt&#39;,&#39;a&#39;) for item in value[&#39;newPosts&#39;]: try: file.write(item[&#39;1&#39;][&#39;f&#39;].encode(&#39;utf-8&#39;)+&#39;|&#39;) file.write(item[&#39;1&#39;][&#39;b&#39;].encode(&#39;utf-8&#39;)+&#39;|&#39;) file.write(item[&#39;1&#39;][&#39;a&#39;].encode(&#39;utf-8&#39;)+&#39;|&#39;) file.write(item[&#39;1&#39;][&#39;v&#39;].encode(&#39;utf-8&#39;)+&#39;\n&#39;) except: continue file.close() print &#39;--正在采集%d/12--&#39;%i time.sleep(5) if __name__ == &#39;__main__&#39;: WY().dealJSON()

以上就是我爬取的代码了。

以上就是抓取网易新闻的python代码示例的详细内容,更多请关注 第一PHP社区 其它相关文章!


推荐阅读
author-avatar
sdlzq
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有