Scraped数据和实际数据不一样(python)

时间:2015-12-09 19:42:28

标签: python-2.7 web-scraping beautifulsoup

要刮的网址http://aqicn.org/city/chennai//us-consulate/
这样做的原因是为了获得" pm2.5aqi","温度","湿度","压力& #34;来自网站的数据。

问题:数据被抓取,从网站来源查看的数据相同。

我使用的代码来抓取和显示数据:

from bs4 import BeautifulSoup
import urllib2
import urllib
import cookielib

url="http://aqicn.org/city/chennai//us-consulate/"
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPRedirectHandler(),
        urllib2.HTTPHandler(debuglevel=0),
        urllib2.HTTPSHandler(debuglevel=0),
        urllib2.HTTPCookieProcessor(cj))
page=opener.open(url)
page_soup=BeautifulSoup(page.read(),'html.parser')

print "curr, max, min pmi2.5 aqi : ",
print page_soup.find('td',id='cur_pm25').string,"     ",page_soup.find('td',id='max_pm25').string,"  ",page_soup.find('td',id='min_pm25').string

print "curr, max, min temp : ",
print page_soup.find('td',id='cur_t').span.string,"  ",page_soup.find('td',id='max_t').span.string,"  ",page_soup.find('td',id='min_t').span.string

print "curr, max, min pressure : ",
print page_soup.find('td',id='cur_p').string,"  ",page_soup.find('td',id='max_p').string,"  ",page_soup.find('td',id='min_p').string

print "curr, max, min humidity : ",
print page_soup.find('td',id='cur_h').string,"  ",page_soup.find('td',id='max_h').string,"  ",page_soup.find('td',id='min_h').string



我正在做什么:我手动识别来自页面源的包含值的标记,并从所绘制的数据中打印相同的标记值。

令人惊讶的是显示的数据和页面上显示的数据。来源不同。

我的删除数据:

curr, max, min pmi2.5 aqi :  143    157    109
curr, max, min temp :  24    30    24
curr, max, min pressure :  1012    1014    1010
curr, max, min humidity :  100    100    62


网站上的数据是:(数据可以通过链接验证,但数据可能会过时,因为它是实时数据)

curr, max, min pmi2.5 aqi : 108   166   94
curr, max, min temp : 27   30   24
curr, max, min pressure : 1013   1014   1010
curr, max, min humidity : 83   100   62


我在页面源中再次检查了相同的标签,并通过使用python显示汤来识别相同的区域:

print page_soup.prettify()


但数据 NOT 相同 这怎么可能?有人可以解释为什么会出现这种奇怪的行为吗?并建议解决此问题的解决方法?

1 个答案:

答案 0 :(得分:1)

实时数据由脚本呈现,它会替换作为已删除数据的默认数据。我不知道为什么他们把默认数据放入,因为它有误导性,应该总是被替换。除非当然不是,然后最好显示错误消息而不是错误的数据。

如果你想把这个看起来像selenium这样的网页驱动程序来为你呈现页面,然后通过漂亮的汤来运行那个