2017-03-29 5 views
0
def findWeather(city): 
    import urllib 

    connection = urllib.urlopen("http://www.canoe.ca/Weather/World.html") 
    rate = connection.read() 
    connection.close() 
    currentLoc = rate.find(city) 
    curr = rate.find("currentDegree") 
    temploc = rate.find("</span>", curr) 
    tempstart = rate.rfind(">", 0, temploc) 
    print "current temp:", rate[tempstart+1:temploc] 

링크는 위에 제공됩니다. 내가 가지고있는 문제는 프로그램을 실행하고 벨기에에서 "브뤼셀"이라고하는 매개 변수, 즉 findWeather ("Brussels")를 사용할 때마다 항상 온도로 24c를 인쇄하는 반면 (필자가 작성한 것처럼) 19c가되어야합니다. 사이트에서 제공하는 다른 많은 도시의 경우입니다. 이 코드에 대한 도움을 주시면 감사하겠습니다.매개 변수로 파이썬 (도시)을 사용한 웹 스크래핑

감사합니다.

+0

'currentLoc'을 : 당신이 결코 변수 – njzk2

+0

당신은 ['BeautifulSoup'] 같은 (https://www.crummy.com/software/BeautifulSoup/을 필요로 사용되지 않습니다 bs4/doc /) 및/또는 [Scrapy] (https://scrapy.org/)를 방문하십시오. 'print' 결과를'rate' ... 당신은 방대한 html 응답을 가지고 있습니다. – roganjosh

+0

첫 번째 span 태그의 값을 제공하고 24 인'currentDegree'를 찾은 후에'span' 태그를 찾고 있습니다. – bhansa

답변

0

이 하나의 작업을해야합니다 :

import requests 
from bs4 import BeautifulSoup 
url = 'http://www.canoe.ca/Weather/World.html' 
response = requests.get(url) 
# Get the text of the contents 
html_content = response.text 
# Convert the html content into a beautiful soup object 
soup = BeautifulSoup(html_content, 'lxml') 
cities = soup.find_all("span", class_="titleText") 

cels = soup.find_all("span", class_="currentDegree") 

for x,y in zip(cities,cels): 
    print (x.text,y.text)