要刮的网址: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 相同
这怎么可能?有人可以解释为什么会出现这种奇怪的行为吗?并建议解决此问题的解决方法?
答案 0 :(得分:1)
实时数据由脚本呈现,它会替换作为已删除数据的默认数据。我不知道为什么他们把默认数据放入,因为它有误导性,应该总是被替换。除非当然不是,然后最好显示错误消息而不是错误的数据。
如果你想把这个看起来像selenium这样的网页驱动程序来为你呈现页面,然后通过漂亮的汤来运行那个。