Python 如何使用scrapy仅对给定域url的站点进行爬网

Python 如何使用scrapy仅对给定域url的站点进行爬网,python,web-crawler,scrapy,scrape,Python,Web Crawler,Scrapy,Scrape,我试图使用scrapy来抓取网站,但没有网站地图或网页索引。如何用scrapy抓取网站的所有页面 我只需要下载该网站的所有网页,而不提取任何项目。我是否只需要在Spider规则中设置以下所有链接?但我不知道scrapy是否会避免以这种方式复制URL。我自己刚刚找到了答案。使用CrawlSpider类,我们只需要在SgmlLinkExtractor函数中设置变量allow=(): 允许(一个正则表达式(或正则表达式列表)–一个(绝对)URL必须匹配才能提取的正则表达式(或正则表达式列表)。如果没有

我试图使用scrapy来抓取网站,但没有网站地图或网页索引。如何用scrapy抓取网站的所有页面


我只需要下载该网站的所有网页,而不提取任何项目。我是否只需要在Spider规则中设置以下所有链接?但我不知道scrapy是否会避免以这种方式复制URL。

我自己刚刚找到了答案。使用
CrawlSpider
类,我们只需要在
SgmlLinkExtractor
函数中设置变量
allow=()

允许(一个正则表达式(或正则表达式列表)–一个(绝对)URL必须匹配才能提取的正则表达式(或正则表达式列表)。如果没有给出(或为空),它将匹配所有链接


Spider
中,将
allowed_domains
定义为要爬网的域列表

class QuotesSpider(scrapy.Spider):
    name = 'quotes'
    allowed_domains = ['quotes.toscrape.com']
然后您可以使用
response.follow()
来跟踪链接。见和

或者,您可以使用
LinkExtractor
(类似)筛选域


为什么不直接循环浏览网站上的所有链接并爬走?@enginefree循环浏览所有链接是可行的方法,但我不知道如何将其设置为scrapy。如果你不想废弃项目,那么为什么要使用scrapy。只要使用任何网站下载程序,它将为您做一切you@user1937我有其他python代码来解析html响应
from scrapy.linkextractors import LinkExtractor

class QuotesSpider(scrapy.Spider):

    name = 'quotes'
    start_urls = ['http://quotes.toscrape.com/page/1/']

    def parse(self, response):
        for quote in response.css('div.quote'):
            yield {
                'text': quote.css('span.text::text').get(),
                'author': quote.css('small.author::text').get(),
                'tags': quote.css('div.tags a.tag::text').getall(),
            }
        for a in LinkExtractor(allow_domains=['quotes.toscrape.com']).extract_links(response):
            yield response.follow(a, callback=self.parse)