Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scrapy:使用特定规则跟踪URL_Url_Sitemap_Scrapy_Rule_Web Crawler - Fatal编程技术网

Scrapy:使用特定规则跟踪URL

Scrapy:使用特定规则跟踪URL,url,sitemap,scrapy,rule,web-crawler,Url,Sitemap,Scrapy,Rule,Web Crawler,我是新来的,在任何地方都找不到我需要做的事情 我需要抓取一组非常相似的URL,但我无法从一个URL访问另一个URL。例如,我需要删除以下URL: www.example.com/1.html www.example.com/2.html (...) www.example.com/1000.html 但在第一页上没有链接到其他页面(即独立页面) 我该怎么做? (对不起我的英语) 大概是这样的: class MySpider(BaseSpider): name = 'example.com

我是新来的,在任何地方都找不到我需要做的事情

我需要抓取一组非常相似的URL,但我无法从一个URL访问另一个URL。例如,我需要删除以下URL:

www.example.com/1.html
www.example.com/2.html
(...)
www.example.com/1000.html
但在第一页上没有链接到其他页面(即独立页面)

我该怎么做? (对不起我的英语)

大概是这样的:

class MySpider(BaseSpider):
   name = 'example.com'
   allowed_domains = ['example.com']
   Start_urls = [
      'http://www.example.com/1.html',
      'http://www.example.com/2.html',
      'http://www.example.com/3.html',
   ]
但超过3个不同的页面


谢谢

如果页面都是这种形式(www.example.com/x.html),那么您可以这样做:

class MySpider(BaseSpider):
   name = 'example.com'
   allowed_domains = ['example.com']
   Start_urls = [
      'http://www.example.com/1.html',
      'http://www.example.com/2.html',
      'http://www.example.com/3.html',
   ]

起始URL=['http://www.example.com/%s.html“%page for page in xrange(1,1000)]

您应该覆盖start\u请求,而不是start\u URL 例如:

def start_requests(self):
    base_url = 'http://www.example.com/
    for i in xrange(1, 10000):
        url = base_url + str(i) + '.html'
        yield Request(url, dont_filter=False, callback='parse_method')
此外,您可以从队列中提供URL列表:

def start_requests(self):
    while True:
        url = queue.get()
        yield Request(url, dont_filter=False, callback='parse_method')

请注意,scrapy的调度程序可能会因并发调度大量URL而过载,因此请小心。

非常好。请记住将此标记为已接受的答案,并在达到足够代表人数时进行投票:)