【问题标题】:Web Scraping a whole page with Scrapy and CSS Selectors使用 Scrapy 和 CSS 选择器抓取整个页面
【发布时间】:2019-11-02 16:28:55
【问题描述】:

我正在尝试一次抓取 html 页面中的所有文本。我知道我会有很多额外的信息,而且不会有条理,但我想看看是否有某种方法可以用一个刮刀一次刮取多个网站。

问题是当我在 Python 中运行 Scrapy 蜘蛛时,我得到了所有空格:即使我指定我只想提取代码中的文本,我也不需要关于页面的额外信息。

我尝试让我的 CSS 选择器更具体,但我总是最终没有任何信息或没有足够的信息

import scrapy
from ..items import WholePageItem

class WholePageSpiderSpider(scrapy.Spider):
    name = 'whole_page_spider'
    start_urls = ['https://www.justanexample.com']

    def parse(self, response):
        items = WholePageItem()
        mission = response.css('body').css('::text').extract()

        items['mission'] = mission

        yield items

提取的输出是这样的:

   'THE GOOD TEXT I WANT TO EXTRACT',
         '\n',
         '\n',
         '\n',
         'window.purechatApi = { l: [], t: [], on: function () { '
         'this.l.push(arguments); } }; (function () { var done = false; '
         "var script = document.createElement('script'); script.async = "
         "true; script.type = 'text/javascript'; script.src = "
         "'https://blablabla.com'; "
         "document.getElementsByTagName('HEAD').item(0).appendChild(script); "
         'script.onreadystatechange = script.onload = function (e) { if '
         "(!done && (!this.readyState || this.readyState == 'loaded' || "
         "this.readyState == 'complete')) { var w = new PCWidget({c: "
         "'3a6f7d8e-a107-4582-b33c-c10aa2b80ac8', f: true }); done = true; "
         '} }; })();',
         '\n',

我想要得到的只是这一部分: '我想提取的好文本',

我不需要具体,我唯一不想要的是'\n',以及代码中的代码。

我能做什么?谢谢

【问题讨论】:

    标签: python html web-scraping css-selectors


    【解决方案1】:

    如果你愿意,我建议你使用 Celery 和 redis 来异步和按计划的方式抓取多个网页。此外还可以通过美丽的汤来更好地了解刮痧。在这种情况下,只是为了获得预期的文本,您可以使用 split 方法,如

    list_separated_by_comma_words = sometext.split(',')
    

    您无法通过索引访问每个预期的单词。想得到这个“我想提取的好文本”你可以做 -

    list_separated_by_comma_words[0]
    

    要按 '\n' 分割,您也可以这样做。但是如果你想去掉 '\n' 你也可以使用.strip() 方法。

    【讨论】:

      猜你喜欢
      • 2018-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-26
      相关资源
      最近更新 更多