如何在使用Scrapy时仅返回可见文本

gdo*_*371 1 python scrapy

我在Windows Vista上使用Python.org版本2.7 64位.我有以下代码:

from scrapy.spider import BaseSpider
from scrapy.selector import Selector

class MySpider(BaseSpider):
    name = "wiki"
    allowed_domains = ["bbc.co.uk"]
    #start_urls = ["http://www.bbc.co.uk/sport/0/"]
    start_urls = ["http://www.bbc.co.uk/sport/0/formula1/28166984"]

    def parse(self, response):
        titles = response.selector.xpath("//title")
        for titles in titles:
            body = response.xpath("//p").extract()
            body2 = str(body)
            body2.replace('\n', '')
            body2.replace('<p>', '')
            print body2
Run Code Online (Sandbox Code Playgroud)

这是在返回我试图抓取的页面的主要文本,但它也返回了大量的HTML标签和回车.在最后几行中你可以看到我已经尝试将变量'body'转换为一个名为'body2'的字符串,然后使用replace函数删除一些不需要的HTML,但是这没有达到预期的效果.

任何人都可以建议一种实现我想做的事情的方法吗?

谢谢

kev*_*kev 7

请使用模块中的remove_tags()功能scrapy.utils.markup

from scrapy.utils.markup import remove_tags

# it'll print 'hello, world'
print remove_tags('<p>hello, world</p>')
Run Code Online (Sandbox Code Playgroud)