在 scrapy 中每 starter_url 设置 allowed_domains?
Set allowed_domains per starter_url in scrapy?
有什么方法可以根据 start_url 设置 allowed_domains 吗?对于 start_url 中的每个 url,我想限制对 url 的域的抓取。抓取网站后,我需要将该域从 allowed_domains 中删除。我想一种方法是动态添加/删除 urls 到 allowed_domains?
相关问题:Crawl multiple domains with Scrapy without criss-cross
您可以尝试这样的操作,检查每个响应的蜘蛛 Requests
输出是否与该响应的域相同(警告:未测试):
from scrapy.http import Request
from scrapy.utils.httpobj import urlparse_cached
class CrissCrossOffsiteMiddleware(object):
def process_spider_output(self, response, result, spider):
domainr = urlparse_cached(response.url).hostname
for x in result:
if isinstance(x, Request):
if x.dont_filter:
yield x
else:
domaino = urlparse_cached(x).hostname
if domaino == domainr:
yield x
else:
yield x
有什么方法可以根据 start_url 设置 allowed_domains 吗?对于 start_url 中的每个 url,我想限制对 url 的域的抓取。抓取网站后,我需要将该域从 allowed_domains 中删除。我想一种方法是动态添加/删除 urls 到 allowed_domains?
相关问题:Crawl multiple domains with Scrapy without criss-cross
您可以尝试这样的操作,检查每个响应的蜘蛛 Requests
输出是否与该响应的域相同(警告:未测试):
from scrapy.http import Request
from scrapy.utils.httpobj import urlparse_cached
class CrissCrossOffsiteMiddleware(object):
def process_spider_output(self, response, result, spider):
domainr = urlparse_cached(response.url).hostname
for x in result:
if isinstance(x, Request):
if x.dont_filter:
yield x
else:
domaino = urlparse_cached(x).hostname
if domaino == domainr:
yield x
else:
yield x