저는 XPath와 Scrapy의 초보자입니다. 고유 한 클래스가없는 노드 (예 : class="pubBody"
)를 타겟팅하려고합니다.XPath는 빈 목록을 반환합니다. 타겟 div 요소를 무시하는 이유는 무엇입니까?
은 이미 시도 : xpath not contains A and B
이것은 간단한 작업해야하지만, XPath는 단지 두 번째 항목이 골대를 벗어났습니다. 나는이 치료 껍질에서 이것을하고있다. 명령 프롬프트에서 다음을
scrapy 쉘 "http://www.sciencedirect.com/science/journal/00221694/"
나는 두 번째 DIV 찾고 있어요 :
<div id="issueListHeader" class="pubBody">...< /div>
<div class="pubBody">... < /div>
가 난 단지 두 번째 첫 번째가 아닌를 얻을 수 있습니다. 비슷한 질문에 대한 최선의 답변은 다음과 같은 것을 시도해 볼 것을 제안했습니다 :
hxs.xpath('//div[contains(@class,"pubBody") and not(contains(@id,"issueListHeader"))]')
그러나 이것은 어떤 이유로 빈 목록을 반환합니다. 어떤 도움을 주시겠습니까? 어리석은 무엇인가 놓치고 있어야한다, 나는 이것을 날 동안 시험해 보았다!
기타 상세 사항 : scrapy 쉘에서 일단
:
첫 번째 div 요소에 대해서만 작동import scrapy
xs = scrapy.Selector(response)
hxs.xpath('//div[@class="pubBody"]')
: 나는 또한했습니다 실패한 두 번째 div 요소에 대한
[<Selector xpath='//div[@class="pubBody"]' data='<div id="issueListHeader" class="pubBody'>]
시도 :
hxs.xpath('//div[@class="pubBody" and not(@id="issueListHeader")]').extract_first()
hxs.xpath('//div[starts-with(@class, "pubBody") and not(re:test(@id, "issueListHeader"))]')
또한 직접 크롬에서 XPath를 복사뿐만 아니라, '[]'반환
hxs.xpath('//*[@id="issueList"]/div/form/div[2]')
http://stackoverflow.com/questions/38447738/beautifulsoup-html5lib-module-object-has-no-attribute-base –