최근에 Scrapy-Splash 플러그인을 사용하기로 결정했지만 Splash가이 사이트를 렌더링 할 수 없습니다 http://orka.sejm.gov.pl/proc6.nsf/
# -*- coding: utf-8 -*-
import scrapy
from scrapy_splash import SplashRequest
class BasicSpider(scrapy.Spider):
name = 'basic'
start_urls = ['http://orka.sejm.gov.pl/proc6.nsf/']
def start_requests(self):
for url in self.start_urls:
yield SplashRequest(url, callback=self.parse,
endpoint='render.html',
args={'wait': 20},)
def parse(self, response):
item = {}
item["data"] = response.xpath('//html').extract()
return item
따라서 결과는 다음과 같습니다.
['<html><head>\n<title>Proces Legislacyjny 6 kadencja</title>\n<script language="JavaScript" type="text/javascript">\n<!-- \nself._domino_name = "_Main";\n// -->\n</script>\n</head>\n\n<frameset frameborder="0" border="0" cols="169,1*">\n\n<frame frameborder="0" noresize name="Left" src="/proc6.nsf/start?OpenPage&BaseTarget=Main">\n\n<frameset frameborder="0" rows="70,1*">\n\n<frame frameborder="0" noresize scrolling="no" name="Maintop" src="/proc6.nsf/pgHeader?OpenPage">\n\n<frame frameborder="0" noresize name="Main" src="/proc6.nsf/Przebieg%20procesu%20legislacyjnego%20-%20projekty%20ustaw?OpenView">\n</frameset>\n</frameset>\n\n</html>']
분명히 일반 브라우저로 사이트를 방문 할 때와 동일하지 않다는 것을 알 수 있습니다. 테이블 데이터와 링크 및 멋진 태그가 없습니다.
Scrapy-Splash에 뭔가 빠졌습니다.
스플래시가 페이지를 올바르게 렌더링하지만 메인 페이지의 html을 반환하고 내부 프레임이 아닌 render.html을 사용하고 있습니다. 이 경우 render.json iframes
을 1 로 설정 해야합니다 .
자세한 내용은 아래 문제를 참조하십시오.
https://github.com/scrapinghub/splash/issues/413
편집 -1
페이지에서 아래 Lua 스크립트를 실행했으며 모든 프레임의 내용을 제공합니다.
function main(splash, args)
assert(splash:go(args.url))
assert(splash:wait(5))
local getFramesHtml = splash:jsfunc([[
function test() {
var data = [];
for (var i = 0 ; i < window.frames.length; i++)
{
data.push(window.frames[i].document.documentElement.outerHTML);
}
return data;
}
]]);
return {
html = splash:html(),
frames = getFramesHtml()
}
end
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다