在< \ p>之间提取内容使用xpath进行webscraping

时间:2017-01-19 16:53:51

标签: python xpath web-scraping scrapy

我试图从网站上提取笑话,我需要逐个开玩笑:

div class="oneliner" 
     itemscope="" 
     itemtype="http://schema.org/Article">

            <p>My girl always tells me "Life is about the little things", but I  just hate when she talks about her Ex.</p>

到目前为止,我使用xpath得出的是

.xpath('//div[@class="oneliner"]')

有了这个我能够提取单个项目,但现在我想循环所有出现并提取文本(\ p之间的所有内容)。为此我尝试了

for joke in jokes:

     item['joke'] = joke.xpath('//p/text()').extract()

但这给了我那个页面的所有笑话,而不是一个接一个地进行。有人可以帮我这个吗?

1 个答案:

答案 0 :(得分:1)

您可以简单地遍历笑话节点并在每次迭代时生成一个项目:

def parse(self, response):
    jokes = response.xpath('//div[@class="oneliner"]')
    for joke in jokes:
        item = dict()
        item['joke'] = joke.xpath('.//p/text()').extract()
        yield item