python - Scrapy CrawlSpider 输出带有空格和函数

标签 python scrapy web-crawler

我目前正在用 scrapy 编写一个爬虫。我想抓取网站上显示的所有文本,不是单个页面,而是所有子页面。我正在使用 CrawlSpider,因为我认为它也是为了抓取其他页面而设计的。这是我到目前为止编写的代码:

import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from scrapy.exporters import XmlItemExporter

class MySpider(CrawlSpider):
    name = 'eship2'
    allowed_domains = ['tlk-energy.com']
    start_urls = ['http://www.tlk-energy.com']

    rules = [Rule(LinkExtractor(), callback='parse_item', follow=True)] # Follow any link scrapy finds (that is allowed).

    def parse_item(self, response):
        item = dict()
        item['url'] = response.url
        item['title'] = response.meta['link_text']
        item['body'] = '\n'.join(response.xpath('//text()').extract())
        return item

我得到的输出非常适合我的愿望,但我仍然有很多像这样的制表符和空格:

> Wärmepumpen- Klimakreislauf E-Fahrzeug
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> Projektbeschreibung   
> 
> Nulla at nulla justo, eget luctus tortor. Nulla facilisi. Duis aliquet
> egestas purus in blandit. Curabitur vulputate, ligula lacinia
> scelerisque tempor, lacus lacus ornare ante, ac egestas est urna sit
> amet arcu.

还有一些像这样的文字:

  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-77796939-1', 'auto');
  ga('send', 'pageview');

我只想要一个文件,例如显示网站文本的 xml,也可能是找到文本的 url。

最佳答案

您需要添加一些后处理来清除结果:

  1. 要从结果中删除 JavaScript 和 CSS 文本,请使用以下命令:

    结果 = 响应.xpath( '//*[not(self::script 或 self::style)]/text()' ).extract()

  2. 然后应用 stripif 删除空行:

    text = "".join([x.strip() for x in results if x.strip()])

关于python - Scrapy CrawlSpider 输出带有空格和函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51023512/

相关文章:

python - Django OneToOneField,ManyToManyField,外键

web-scraping - Nutch - 克隆网站

solr - Xapian 的爬虫/解析器

python - Scrapy:使用正则表达式跟踪链接

ruby-on-rails - 如何使用 Nokogiri 在两个 HTML 注释之间抓取 HTML?

python - 使用 Pandas 查找时间序列中方差最小的部分/窗口

python - 使用 pykafka 在主题的特定分区上发布

python - 如何修复 StreamlitAPIException : ("Expected bytes, got a ' int' object", 'Conversion failed for column FG% with type object' )

python - Scrapy 只抓取 http header 数据

css - Scrapy 无法通过 CSS 或 xPath 请求文本