Python Scrapy:在scrape中排除一些文本
我是个新手,花了很多时间试图解决我认为应该是两个简单的问题 (1) 我正在尝试删除此网站: 具体地说,我只是想抓取文章的文本(所以没有图片、标题、标题等等)。我使用的代码是:Python Scrapy:在scrape中排除一些文本,python,web-scraping,scrapy,Python,Web Scraping,Scrapy,我是个新手,花了很多时间试图解决我认为应该是两个简单的问题 (1) 我正在尝试删除此网站: 具体地说,我只是想抓取文章的文本(所以没有图片、标题、标题等等)。我使用的代码是: response.css('div.body_1gnLA p::text').extract() 问题是,在文章的底部,有一个“关于作者”的部分,我不想让它包含在草稿中。我不想要的具体文本如下: “彼得·范布伦(Peter Van Buren),一位24岁的国务院老兵,是《我们的好意:我如何帮助伊拉克人民输掉这场战争》
response.css('div.body_1gnLA p::text').extract()
问题是,在文章的底部,有一个“关于作者”的部分,我不想让它包含在草稿中。我不想要的具体文本如下:
“彼得·范布伦(Peter Van Buren),一位24岁的国务院老兵,是《我们的好意:我如何帮助伊拉克人民输掉这场战争》和《霍珀战争:二战日本小说》的作者。@WeMeantWell
本文所表达的观点并非路透社新闻。”
(2) 在这篇文章中,有些文本是超链接的。例如,在第一句话中
“2017年12月9日,伊拉克总理海德尔·阿巴迪宣布战胜伊斯兰国”
宣布的胜利是超链接的。当我使用上面编写的代码进行刮取时,它会给我
“2017年12月9日,伊拉克总理海德尔·阿巴迪就伊斯兰国问题发表讲话”
请注意,缺少超链接部分“宣布胜利”。我怎样才能解决这个问题?我只想把整句话的内容删去;我不在乎那部分
如果有人能帮忙,我将不胜感激 一种可能的方法:
def parse(self, response):
paragraphs = []
for p in response.xpath('//div[@class="body_1gnLA"]/p'):
p_text = p.xpath( 'string(.)' ).extract_first()
paragraphs.append(p_text)
article = "\n".join(paragraphs)
print(article)