用Scrapy和CSS选择器抓取整个页面

2024-03-29 10:39:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试一次刮去html页面中的所有文本。我知道我会有很多额外的信息,它将不会被组织,但我试图看看是否有某种方法,刮多个网站一次与一个刮刀。你知道吗

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

我试图使我的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',以及代码中的代码。你知道吗

我能做什么?谢谢


Tags: 代码文本信息truevarscriptitemsfunction
1条回答
网友
1楼 · 发布于 2024-03-29 10:39:58

我建议您使用芹菜与redis来刮多个网页异步和预定的方式,如果你想。此外,还要通过靓汤更好地了解刮痧。在这种情况下,为了得到预期的文本,可以使用split方法,如

list_separated_by_comma_words = sometext.split(',')

您不能通过索引访问所有期望的单词。想得到这个“我想提取的好文本”你可以-

list_separated_by_comma_words[0]

若要按'\n'拆分,也可以这样做。但是如果您想剥离'\n',您也可以使用.strip()方法。你知道吗

相关问题 更多 >