2017-12-04 18 views
0

정보 테이블이있는 웹 페이지를 긁는 웹 스크래핑 프로그램을 만들려고합니다. 매 5 분마다. 웹 페이지가 다르거 나 업데이트 된 경우 새 페이지를 원본으로 만들고 업데이트를 알리는 이메일을 보내야합니다. 지금까지 내 코드는 다음과 같습니다.내 프로그램을 실행하면 '[]'만 반환되고 웹 사이트의 정보 테이블에서 데이터를 반환해야합니다.

import urllib   
import urllib.request as request    
import re 

totalurl = "https://www.icc-ccs.org/index.php/piracy-reporting-centre/live-piracy-report"   
htmlfile = urllib.request.urlopen(totalurl)   
htmltext = htmlfile.read()   
regex = '<div class="fabrikDataContainer">...</div>'    
pattern = re.compile(regex)   
with urllib.request.urlopen(totalurl) as response:   
    html = htmltext.decode()    

num = re.findall(pattern, html) 
print(num) 

답변

0

Regex는 실제로 웹 스크래핑에서 옵션이 아닙니다. 당신은 아래의 예를 들어, lxml를 사용할 수 있습니다

import urllib 
import urllib.request as request 
from lxml import html 

totalurl = "https://www.icc-ccs.org/index.php/piracy-reporting-centre/live-piracy-report" 
htmlfile = urllib.request.urlopen(totalurl) 
htmltext = htmlfile.read() 
source = html.fromstring(htmltext.decode()) 
num = source.xpath('//div[@class="fabrikDataContainer"]') 
print(num[0].text_content()) 

출력은 테이블의 전체 텍스트 내용입니다. 더 복잡한 선택기를 구현하여 특정 데이터를 가져올 수 있습니다.

+0

감사하지만 다음과 같은 오류가 나타납니다.
** 추적 (최근 호출 마지막) : 파일 "/ Users/kieronblemings/Desktop/Web scraping/table scrape. lxml이 수입 HTML ModuleNotFoundError에서 라인 3, "평 : 'LXML'** –

+0

시도가' – Andersson

+0

lxml' 설치 PIP라는 이름의 모듈이 말한다 ** 설치 ** 당신은'실행해야 잘못된 구문 @Andersson –