내가 모든 페이지에서 모든 동영상 URL의를 긁어 거미를 가지고 scrapy 및 파이썬파이썬 scrapy -에서 긁어은 온 클릭 대화
를 사용하여 this site에서 동영상 및 영어 성적 증명서에 대한 모든 링크를 긁어하기 위해 노력하고있어 (NB 팝업 . 프로그래밍에서는 쓸모가 없다.)하지만, 필사본을 긁는 방법을 알아낼 수 없다. 스크립트 대화 상자는 버튼을 클릭 한 후에 만 나타납니다. 성적표에 대한 링크는이 새 팝업에서 찾을 수 있습니다. 내가 읽은 다른 모든 자습서는 POST 요청을 처리하지만 이것이 아약스 GET 요청 인 것 같습니다. (그래서 나는 무엇을 해야할지 전혀 모른다.) 또한 페이로드 및 양식 컨트롤을 언급 게시물을 본 적이 있지만 나는 그들이이 사이트
버튼을 클릭하기 전에 페이지에서 관련 HTML을 위해 무엇 아무 생각이 없다 :
<span class="transcription make-cursor" onclick="showTranscriptionDialog('17394')">
<img class="video-doclet-icons" src="images/transcript4.png"
title="Download Transcription, Tercüme'yi indir, تحميل النص"
alt="Transcription" data-pin-nopin="true"></span>
관련 HTML (대화창 팝업) :
<span class="ui-corner-all" id="transcription-language-list17394"
style="background-color: rgb(245, 243, 229); color: rgb(51, 51, 51);">
<a class="transcription-language-list" target="_blank"
href="http://saltanat-transcriptions.s3.amazonaws.com/english/2017-08-08_en_NothingMeansEverything_SB.pdf"
onmouseover="transcriptionLanguageMouseOver(17394)"
onmouseout="transcriptionLanguageMouseOut(17394)"
style="color: rgb(51, 51, 51);"> English </a></span>
내 현재 거미 코드
import scrapy
class SuhbaSpider(scrapy.Spider):
name = "suhbas"
start_urls = ["http://saltanat.org/videos.php?topic=SheikhBahauddin&gopage={numb}".format(numb=numb)
\t \t for numb in range(1,23)]
def parse(self, response):
\t \t \t yield {
'video': response.xpath('//span[@class='download make-cursor']/a/@href').extract(),
}
\t \t videoid = response.xpath("substring(//span[@class='media-info make-cursor']/@onclick, 22, 5)").extract()
for p in videoid:
url = "http://saltanat.org/ajax_transcription.php?vid=" + p
yield scrapy.Request(url, callback=self.parse_transcript)
def parse_transcript(self, response):
yield {
'transcript': response.xpath('//a[contains(@href,'english')]/@href').extract(),
}
어떤 도움을 (작동하지 않는 것은) 주시면 감사하겠습니다, 감사합니다!
두 가지 방법이 있습니다. 당신은 webdriver로 자바 스크립트를 실행하고 버튼 클릭을 시뮬레이션 할 수 있습니다. 또는 GET 요청을 직접 수행 한 다음 응답을 구문 분석 할 수 있습니다. 네트워크 탭에서 브라우저의 dev 도구를 열고 단추를 클릭 할 때 수행중인 작업을 확인하십시오. 파이썬 코드에서 동일한 요청을 시도하십시오. – rm4
@ rm4 답장을 보내 주셔서 감사합니다. 웹 드라이브 사용에 너무 열중하지 않습니다. 두 번째 옵션을 기반으로 해보려 던 스파이더 코드를 첨부했습니다. 문제는 스파이더를 실행할 때 어떤 결과도 얻지 못한다는 것입니다. – jblack