2017-12-01 7 views
1
response.xpath('//*[@id="blah"]//text()') 

내 HTML 내가 심지어 한 <p> 태그하지만 텍스트의 목록을 어떤 일이 일어나고단일 노드 scrapy의 XPath는 모든 텍스트를 포함하는 HTML을 가져

<p id="blah">This is a simple text <a href="#">foo</a> and this is after tag. </p> 

가정하자. 이러한

[u'This is a simple text', u' and this is after tag.'] 

로 내 실제 HTML 콘텐츠는 거대하고 나는 이것을 달성하기 위해 join을해야한다. 또한 나는 foo을 잃고 join을 잃는다. 특정 xpathscrapy 메커니즘이 있습니까?

결과를 얻고 싶습니다. 이것은 간단한 텍스트 foo이며 태그 뒤에 있습니다.

여기서도 foo에 주목하십시오.

감사

+1

https://stackoverflow.com/questio ns/40985060/scrapy-css-selector-get-all-inner-tags 태그 – furas

+0

또한 xpath에 적용 할 수 있습니까? –

답변

1

문자열 조인 기능을 사용할 수 있습니다

response.xpath('//*[@id="blah"]')[0].text_content() 

출력 :

'This is a simple text foo and this is after tag. ' 
1

는 XPath는이 있다면 당신은 당신은 다음과 같이 하나의 문자열로 모든 텍스트 노드를 얻을 수 있습니다

response.xpath('string-join(//*[@id="blah"]//text())')