存档

文章标签 ‘BeautifulSoup’

python use BeautifulSoup crawl weather forecast

2009年9月16日 评论已被关闭

python 使用BeautifulSoup(美汤)来抓取天气预报,简单的例子,只当练手

#!/usr/bin/env python
# -*- coding: gb2312 -*-

#get weather info from internet
#http://weather.china.com.cn/city/54511_full.html

import urllib,re,unicodedata,string,sys,re
from BeautifulSoup import *

if __name__==”__main__”:
    response = urllib.urlopen(“http://weather.china.com.cn/city/54511_full.html”)
    result = response.read()
    soup = BeautifulSoup(”.join(result))
    weather = soup.findAll(‘td’)
    list = []
    tmplist = []
    for i in xrange(0,len(weather)):
        tmpstr = weather[i].string
        if tmpstr not in [‘ ’,None,u’地方气象网站’,’合作伙伴:中国气象局中央气象台’,u’天气预报’]:
            list.append(tmpstr)
    for j in xrange(0,4):
        print list[j]

result is:
北京
气温:29 ℃~17 ℃
风向:微风
风力:小于3 级

BeautifulSoup has bug in rss tag ‘link’

2009年9月15日 1 条评论

BeautifulSoup 在处理rss页面时发现了如下问题,在rss页面中如果包含<link>标签,BeautifulSoup 处理的不好,具体如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib,re,unicodedata,string,sys,re
from BeautifulSoup import *

if __name__==”__main__”:
    response = urllib.urlopen(“http://news.163.com/special/00011K6L/rss_newstop.xml”)
    result = response.read()
    soup = BeautifulSoup(”.join(result))
    print soup.originalEncoding   
    print soup.prettify()
    news = soup.findAll(‘link’)
    print news

============
gbk
<?xml version=’1.0′ encoding=’utf-8′?>
<?xml version=’1.0′ encoding=’utf-8′?>
<rss version=”2.0″>
 <channel>
  <title>
   网易头条新闻
  </title>
  <link />
  http://news.163.com/
  <description>
   头条新闻
  </description>
  <item id=”1″>
   <title>
    <![CDATA[人民日报:人民精神文化生活”前所未有的丰富”]]>
   </title>
   <link />
   http://news.163.com/09/0914/13/5J6444CA0001124J.html
   <description>
    <![CDATA[人民网9月14日报道 新中国成立60年来,我国新闻出版事业走过了不平凡的历程。从中人们能深切感受到它对振奋精神、凝聚力量、促进改革发展稳定的巨大作用,也会切身体会到其与时代同行、与人民同心的历史性进步。 这种进步,可以从两个方面来考量。一方面是这些年来新闻出版业“前所未有的创新”。从全面推动宣传思想工作“  ]]>
    ……
   </description>
   <pubdate>
    2009-09-14 13:19:09
   </pubdate>
  </item>

[<link />, <link />, <link />, <link />, <link />, <link />, <link />, <link />, <link />, <link />, <link />, <link />, <link />, <link />, <link />, <link />, <link />, <link />, <link />, <link />, <link />, <link />, <link />, <link />, <link />, <link />, <link />, <link />, <link />, <link />, <link />]

结果可以看到没有取到link标签的内容,应该是BeautifulSoup在自作聪明的补全标签时出现了问题。