2013-02-01 4 views
0

this site에서 % 확인, FAR의 숫자 값 및 POD의 수치를 다음과 같은 세 가지 데이터 포인트로 긁어 내고 싶습니다. BeautifulSoup에서이 작업을 수행하려고하지만 사이트 트래버 싱에서 연습하지 않으므로 해당 요소의 위치를 ​​설명 할 수 없습니다.지저분한 사이트에서 아름다운 스프를 사용하여 파이썬 웹 스크 레이 핑

이렇게하는 가장 쉬운 방법은 무엇입니까?

답변

1

는 나는 내가 isedev 유사한 전략을 사용했다 myself-- 해결 결국,하지만 난이 '검증'데이터 얻기의 더 나은 방법을 찾을 수있는 기대했다 :

import urllib2 
from bs4 import BeautifulSoup 

wfo = list() 

def main(): 
    wfo = [i.strip() for i in open('C:\Python27\wfo.txt') if i[:-1]] 
    soup = BeautifulSoup(urllib2.urlopen('http://mesonet.agron.iastate.edu/cow/?syear=2009&smonth=9&sday=12&shour=12&eyear=2012&emonth=9&eday=12&ehour=12&wfo=ABQ&wtype%5B%5D=TO&hail=1.00&lsrbuffer=15&ltype%5B%5D=T&wind=58').read()) 
    elements = soup.find_all("span") 
    find_verify = soup.find_all('th') 

    far= float(elements[1].text) 
    pod= float(elements[2].text) 
    verified = (find_verify[13].text[:-1]) 
2

아직 Firefox를 설치하지 않은 경우 Firebug을 설치하여 페이지의 html 소스를 검사하십시오.

urllibBeautifulSoup의 조합을 사용하여 html 검색 및 구문 분석을 처리하십시오. 다음은 간단한 예입니다.

여기에서
import urllib 
from BeautifulSoup import BeautifulSoup 

url = 'http://mesonet.agron.iastate.edu/cow/?syear=2009&smonth=9&sday=12&shour=12&eyear=2012&emonth=9&eday=12&ehour=12&wfo=ABQ&wtype[]=TO&hail=1.00&lsrbuffer=15&ltype[]=T&wind=58' 
fp = urllib.urlopen(url).read() 
soup = BeautifulSoup(fp) 

print soup 

, 내가 제공하는 링크가 당신에게 관심있는 요소를 검색하는 방법에 좋은 시작을 주어야한다

1

처럼 That1Guy의 당신이 분석 할 필요가 말한다 소스 페이지 구조. 이 경우 운이 좋았습니다. 찾으려는 숫자는 <span>을 사용하여 빨간색으로 강조 표시했습니다.

이이 작업을 수행합니다

>>> import urllib2 
>>> import lxml.html 
>>> url = ... # put your URL here 
>>> html = urllib2.urlopen(url) 
>>> soup = lxml.html.soupparser.fromstring(html) 
>>> elements = soup.xpath('//th/span') 
>>> print float(elements[0].text) # FAR 
0.67 
>>> print float(elements[1].text) # POD 
0.58 

lxml.html.soupparser (나는 순간에 손 필요가 없습니다)이 BeautifulSoup 파서 거의 동일합니다.

관련 문제