我有以下情况:
<div class="question">
<div class="post-layout">
<div class="post-text">
<p> Sample Question </p>
</div>
</div>
</div>
和
<div class="answer">
<div class="post-layout">
<div class="post-text">
<p> Sample Answer </p>
</div>
</div>
</div>
我想question
从类中分别提取类的文本answer
。
我试过了:response.css('.post-text > p::text').extract()
但这可以同时提取问题和答案。
我尝试过:response.css('.question > .post-text > p::text').extract()
但是它什么也没有返回。
我也尝试过:response.xpath(".//div[@class='question']/div[@class='post-text']/p//text()").extract()
但是它什么也没有返回。
我是Scrapy的新手,所以也许我做错了...任何帮助将不胜感激!
谢谢!
你近了 在>
你的选择会要求你选择什么样的孩子。因为<p>
不是它的直接子对象,<div class="answer">
所以找不到它。您可以通过删除它来解决此问题
question = response.css(".question p::text").get()
answer = response.css(".answer p::text").get()
请注意我用get()
的,而不是extract()
仅仅因为这是现在做这个推荐的方式。
您第二次尝试不起作用,因为您缺少post-layout
课程。例如,使用该方法的正确方法是
response.css('.question > .post-layout > .post-text > p::text')
的xpath
等同物
question = response.xpath('//div[@class="question"]//p/text()').get()
answer = response.xpath('//div[@class="answer"]//p/text()').get()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句