- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
出于我正在开发的应用程序的目的,我需要 scrapy 来中断爬网并从特定的任意 URL 重新开始爬网。
scrapy 的预期行为是仅返回到特定 URL,如果满足特定条件,则可以在参数中提供该 URL。
我正在使用 CrawlSpider,但不知道如何实现这一点:
class MyCrawlSpider(CrawlSpider):
name = 'mycrawlspider'
initial_url = ""
def __init__(self, initial_url, *args, **kwargs):
self.initial_url = initial_url
domain = "mydomain.com"
self.start_urls = [initial_url]
self.allowed_domains = [domain]
self.rules = (
Rule(LinkExtractor(allow=[r"^http[s]?://(www.)?" + domain + "/.*"]), callback='parse_item', follow=True),
)
super(MyCrawlSpider, self)._compile_rules()
def parse_item(self, response):
if(some_condition is True):
# force scrapy to go back to home page and recrawl
print("Should break out")
else:
print("Just carry on")
我尝试放置
return scrapy.Request(self.initial_url, callback=self.parse_item)
在someCondition is True
的分支中,但没有成功。非常感谢一些帮助,我已经花了几个小时试图解决这个问题。
最佳答案
您可以创建一个适当处理的自定义异常,就像这样......
请随意使用 CrawlSpider 的适当语法进行编辑
class RestartException(Exception):
pass
class MyCrawlSpider(CrawlSpider):
name = 'mycrawlspider'
initial_url = ""
def __init__(self, initial_url, *args, **kwargs):
self.initial_url = initial_url
domain = "mydomain.com"
self.start_urls = [initial_url]
self.allowed_domains = [domain]
self.rules = (
Rule(LinkExtractor(allow=[r"^http[s]?://(www.)?" + domain + "/.*"]), callback='parse_item', follow=True),
)
super(MyCrawlSpider, self)._compile_rules()
def parse_item(self, response):
if(some_condition is True):
print("Should break out")
raise RestartException("We're restarting now")
else:
print("Just carry on")
siteName = "http://whatever.com"
crawler = MyCrawlSpider(siteName)
while True:
try:
#idk how you start this thing, but do that
crawler.run()
break
except RestartException as err:
print(err.args)
crawler.something = err.args
continue
print("I'm done!")
关于python - Scrapy中遇到某种情况如何跳出爬行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53283663/
再会! 我有一个 ActiveX 按钮(根据从顶部开始的行数锚定在位置上),它运行 VBA 代码以在特定点插入指定数量的复制行。代码本身工作正常,但按钮“克隆”自身并将自身覆盖在新行的位置,即使我设置
我正在尝试在 Ubuntu 14.04 上部署 Nutch 2.3 + ElasticSearch 1.4 + HBase 0.94 以下 tutorial .当我尝试开始爬行注入(inject)网址
我正在尝试爬行某个驱动器并从埋藏在子目录中的某些 .xls 文件中获取数据。该驱动器超过 1 TB,并且文件夹并不都具有相同的层次结构,因此我正在遍历所有文件夹。到目前为止,该脚本运行良好。 问题是,
首先,我希望抓取是从桌面 .exe 向网站发送请求并获取数据的正确词。如果是,我应该使用什么库或插件?我是否应该使用另一种语言来执行此操作(如 Java 或其他语言?)。我需要一些“提示”,因为我真的
这是我的代码: def parse(self, response): selector = Selector(response) sites = selector.xpath("//
完整的 Node.js 菜鸟,所以不要评判我...... 我有一个简单的要求。爬取网站,查找所有产品页面,并保存产品页面中的一些数据。 说的更简单,做的更简单。 查看 Node.js 示例,我找不到类
我花了很多时间玩弄和使用谷歌,但我无法解决我的问题。我是 Scrapy 的新手,希望你能帮助我。 部分有效的爬虫:我从 MySQL 数据库中定义我的 start_requests url。使用“par
老方法 当我以前在需要内容被搜索引擎索引的项目中异步加载页面时,我使用了一种非常简单的技术,那就是 Page $('#example').click(function(){
我正在尝试使用 Scrapy 抓取 ajax 站点,网址是 http://www.target.com/p/bounty-select-a-size-white-paper-towels-12-meg
我正在尝试按照 NutchTutorial 运行基本爬网: bin/nutch crawl urls -dir crawl -depth 3 -topN 5 所以我已经安装了 Nutch,并使用 So
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我做了一个抓取脚本,通过爬行逐一抓取任何网站(要输入的url)的内部页面,获取其他内部url并处理它们以获取所有页面并提取其纯文本(剥离的html)。请参阅my previous回答。该脚本运行良好,
无论如何,驱动程序是否可以记住登录 session ,所以它不会带我回到登录页面(例如google-chrome)? 这就是我现在正在做的事情 public static void main(Stri
我是网络爬虫新手,我需要一些关于这两个 Node JS 爬虫的指导。 目标:我的目标是抓取网站并仅获取该域内的内部(本地)URL。我对任何页面数据或抓取不感兴趣。只是 URL。 我的困惑:使用 nod
我是一名优秀的程序员,十分优秀!