我在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
这是在返回我试图抓取的页面的主要文本,但它也返回了大量的HTML标记和回车。在最后几行中你可以看到我已经尝试将变量'body'转换为一个名为'body2'的字符串,然后使用replace函数删除一些不需要的HTML,但是这没有达到预期的效果。
有人能建议一种实现我想做的事情吗?
由于
答案 0 :(得分:5)
请使用remove_tags()
模块
scrapy.utils.markup
功能
from scrapy.utils.markup import remove_tags
# it'll print 'hello, world'
print remove_tags('<p>hello, world</p>')
答案 1 :(得分:2)
尝试:
response.selector.xpath("normalize-space(//title)")
答案 2 :(得分:0)
尝试: text()
response.xpath("p/text()").extract()
这适用于所有标签,不仅适用于段落