zoukankan      html  css  js  c++  java
  • 1)⑥爬取腾讯经济相关的部分新闻

     1 __author__ = 'minmin'
     2 #coding:utf-8
     3 import re,urllib,sgmllib
     4 
     5 #根据当前的主页url获取html
     6 def getHtml(url):
     7     page = urllib.urlopen(url)
     8     html = page.read()
     9     page.close()
    10     return html
    11 
    12 
    13 #html链接的标签是“a”,链接的属性是“href”,也就是要获得html中所有tag=a,attrs=href 值。
    14 class URLPaser(sgmllib.SGMLParser):
    15     def reset(self):
    16         sgmllib.SGMLParser.reset(self)
    17         self.urls = []
    18 
    19     def start_a(self,attrs):
    20         href = [v for k,v in attrs if k == 'href']
    21         if href:
    22             self.urls.extend(href)
    23 
    24 #根据html获取想要的文章内容
    25 def func(str):
    26     #用正则表达式提取自己想要获取的内容
    27      result = re.findall(r"<P style="TEXT-INDENT: 2em">([^<>]*)</P>",getHtml(url),re.M)
    28      artical =''
    29      for j in result:
    30          if len(j)<>0:
    31              j = j.replace("<STRONG>","   ")#去掉<STRONG>,换成"     "
    32              j = j.replace("</STRONG>","   ")#去掉</STROGN>换成"     "
    33              artical = artical + j + '
    '
    34      return  artical
    35 
    36 
    37 IParser = URLPaser()
    38 socket = urllib.urlopen("http://finance.qq.com/")#打开主页
    39 
    40 IParser.feed(socket.read())#开始分析处理
    41 
    42 reg = 'http://finance.qq.com/a/.*'#用来匹配符合条件的链接,使用正则表达式匹配
    43 
    44 pattern = re.compile(reg)
    45 
    46 i = 0
    47 url2 = []
    48 for url in IParser.urls:#链接都存在urls里
    49 
    50     if pattern.match(url):#匹配符合条件的链接
    51         artical = func(url)#调用函数func
    52         if url not in url2:#重复的url不再进行提取文章内容
    53              url2.append(url)
    54              print url
    55              if len(artical)<>0:#如果文章捏弄内容不为空
    56                    print artical
    57                    i = i + 1
    58                    #这个文件地址是文件保存地址,可根据要保存位置自己进行相应的更改
    59                    f = open("qq/Economy/"+str(i) + '.txt','a+')#把提取的内容按顺序保存在相应文件夹中
    60                    f.write(artical)
    61                    f.close()
    62 
    63 
    64 #################################################################################################################
    65 #注:本文借鉴http://www.jb51.net/article/52062.htm
    66 #并在其基础上改进的 重复的url不再进行爬取,并把提取的内容写到指定的文件夹中
    67 #################################################################################################################
  • 相关阅读:
    [Java] 编写第一个java程序
    [Java] 环境变量设置
    [ActionScript 3.0] 常用的正则表达式
    [ActionScript 3.0] 正则表达式
    Python学习之==>URL编码解码&if __name__ == '__main__'
    Python学习之==>面向对象编程(一)
    Linux下安装redis-4.0.10
    Linux下编译安装Python-3.6.5
    Python学习之==>发送邮件
    Python学习之==>网络编程
  • 原文地址:https://www.cnblogs.com/minmsy/p/4962749.html
Copyright © 2011-2022 走看看