Web crawler Scrapy:如何忽略所有Javascript、JQuery。。。刮的时候

Web crawler Scrapy:如何忽略所有Javascript、JQuery。。。刮的时候,web-crawler,scrapy,Web Crawler,Scrapy,我以为我有一个解决方案,但当然有些网站有不同的结构,它没有工作在那里。我需要知道如何去除所有Javascript、JQuery和任何其他可能存在于网站源代码中的代码,而不是纯文本。 我在MySpider.py和items.py上尝试了这个解决方案()。我不知道为什么它不能与删除带有内容的标签一起工作,但事实并非如此。当前的工作文件如下所示: MySpider.py items.py 我知道这不符合我的要求(删除所有Javascript-、JQuery-、…代码),但这是我必须采用的当前情况。 因

我以为我有一个解决方案,但当然有些网站有不同的结构,它没有工作在那里。我需要知道如何去除所有Javascript、JQuery和任何其他可能存在于网站源代码中的代码,而不是纯文本。 我在MySpider.py和items.py上尝试了这个解决方案()。我不知道为什么它不能与
删除带有内容的标签一起工作,但事实并非如此。当前的工作文件如下所示:

MySpider.py items.py 我知道这不符合我的要求(删除所有Javascript-、JQuery-、…代码),但这是我必须采用的当前情况。 因此,如果你有任何建议如何摆脱它,我想尝试一下。

我想我找到了一个答案(至少有一个适合我)。 我将以下行从MySpider.py
加载器中更改为
loader.add_xpath('fragment','//body//text()')
。add_xpath('fragment','/*[not(self::script)]/text())
。 因此,该文件的完整代码现在是:

from scrapy.linkextractors import LinkExtractor
from scrapy.loader import ItemLoader
from scrapy.selector import Selector
from scrapy.spiders import CrawlSpider, Rule
from Scrapy_One.items import Items_Main

class MySpider(CrawlSpider):
    name = 'spiderName'
    allowed_domains = ['example.de']
    start_urls = ['http://www.example.de/']
    rules = (Rule(LinkExtractor(allow = ('', ),
                            deny = ('/(\w|\W)*([Ii]mpressum|[Aa]bout|[Pp]rivacy|[Tt]erms|[Cc]opyright|[Hh]elp|[Hh]ilfe|[Dd]atenschutz|[KkCc]onta[kc]t|[Rr]echtliche(\w|\W)*[Hh]inweis|[Hh]aftungsausschlu)'),
                            unique = True),
                            callback = 'parse_stuff',
                            follow = True),
        )

    def parse_stuff(self, response):
        hxs = Selector(response)
        sites = hxs.xpath('//body')
        items_main = []

        for site in sites:
            loader = ItemLoader(item = Items_Main(), response = response)
            loader.add_xpath('fragment', '//*[not(self::script)]/text()')
            items_main.append(loader.load_item())
            return items_main
from scrapy.item import Item, Field
from scrapy.loader.processors import MapCompose, Join, TakeFirst
#from scrapy.utils.markup import remove_tags_with_content
from w3lib.html import replace_escape_chars, remove_tags

class Items_Main(Item):
    fragment = Field(
        input_processor = MapCompose(lambda v: v.strip(), remove_tags, replace_escape_chars),
        output_processor = Join(),
    )
from scrapy.linkextractors import LinkExtractor
from scrapy.loader import ItemLoader
from scrapy.selector import Selector
from scrapy.spiders import CrawlSpider, Rule
from Scrapy_One.items import Items_Main

class MySpider(CrawlSpider):
    name = 'spiderName'
    allowed_domains = ['example.de']
    start_urls = ['http://www.example.de/']
    rules = (Rule(LinkExtractor(allow = ('', ),
                            deny = ('/(\w|\W)*([Ii]mpressum|[Aa]bout|[Pp]rivacy|[Tt]erms|[Cc]opyright|[Hh]elp|[Hh]ilfe|[Dd]atenschutz|[KkCc]onta[kc]t|[Rr]echtliche(\w|\W)*[Hh]inweis|[Hh]aftungsausschlu)'),
                            unique = True),
                            callback = 'parse_stuff',
                            follow = True),
        )

    def parse_stuff(self, response):
        hxs = Selector(response)
        sites = hxs.xpath('//body')
        items_main = []

        for site in sites:
            loader = ItemLoader(item = Items_Main(), response = response)
            loader.add_xpath('fragment', '//*[not(self::script)]/text()')
            items_main.append(loader.load_item())
            return items_main