首页 文章

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

提问于
浏览
2

The url to scrapehttp://aqicn.org/city/chennai//us-consulate/
The reason 这样做是为了从网站上获取"pm2.5aqi","temperature","humidity","pressure"数据 .

The problem :数据被抓取,从网站来源查看的数据是 NOT 相同 .

The code I used 刮取并显示数据:

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

What I was doing :我手动识别页面源中包含值的标记,并从所绘制的数据中打印相同标记的值 .

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

我的抓取数据:

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()

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

1 回答

  • 1

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

    如果你想把这个看起来像硒这样的网络驱动程序为你呈现页面,然后通过美丽的汤运行 .

相关问题