我有一个具有如下SQL查询的搜索模块:
SELECT FROM trilers WHERE title '%something%'
当我搜索关键字(例如“蜘蛛侠”)时,它返回的不是找到,但当我搜索“蜘蛛侠”时,它会返回我的内容( MySQL中的原始行是“蜘蛛侠”)。
我怎么能忽略所有的符号,如-,#,!,:,同时返回“蜘蛛侠”和“蜘蛛侠”关键字的内容?
说我有一只蜘蛛:
class SomeSPider(Spider):
name ='spname'
然后,我可以通过创建一个新的SomeSpider实例并像下面这样调用爬虫来爬行我的蜘蛛:
spider= SomeSpider()
crawler = Crawler(settings)
crawler.configure()
crawler.crawl(spider)
....
我能用蜘蛛的名字做同样的事吗?我是说'spname‘?
crawler.crawl('spname') ## I give just the spider name h
我试图通过运行scrapy genspider -t crawl newspider "example.com"来创建一个新的蜘蛛。这是在最近创建的蜘蛛项目目录C:\Users\donik\bo_gui\gui_project中运行的。因此,我得到了一条错误消息:
File "C:\Users\donik\bo_gui\gui_project\gui_project\spiders\requisites.py", line 6, in <module>
from gui_project.gui_project.updated_kw imp
我有两个蜘蛛,我想并行执行它,。我使用CrawlerProcess实例及其crawl方法来解决这个问题。但是,我希望为同一进程中的每个蜘蛛指定不同的输出文件,即FEED_URI 。我试图循环蜘蛛并运行它们,如下所示。虽然生成了两个不同的输出文件,但进程在第二个蜘蛛完成执行后立即终止。如果第一个蜘蛛在第二个蜘蛛之前完成爬行,我将得到所需的输出。但是,如果第二个蜘蛛先完成爬行,那么它就不会等待第一个蜘蛛完成。我怎么才能解决这个问题呢?
from scrapy.utils.project import get_project_settings
from scrapy.crawler import C
如果关闭的原因是因为我的网络连接(在夜间网络中断5分钟),我正试图让我的Scrapy蜘蛛再次发射。当网络关闭时,蜘蛛在5次尝试后关闭。
我试图在我的蜘蛛定义中使用这个函数,试图在关闭时重新启动蜘蛛:
def handle_spider_closed(spider, reason):
relaunch = False
for key in spider.crawler.stats._stats.keys():
if 'DNSLookupError' in key:
relaunch = True
br
我有一个Scrapy蜘蛛,我使用bash脚本和crontab每小时运行一次。
蜘蛛的运行时间约为50分钟,但可能超过小时。
我想要的是检查蜘蛛是否在运行,如果没有,就开始新的爬行。
BASH脚本
#!/usr/bin/env bash
source /home/milano/.virtualenvs/keywords_search/bin/activate
cd /home/milano/PycharmProjects/keywords_search/bot
# HERE I WANT TO CHECK, WHETHER THE PREVIOUS CRAWLING ALREADY STOP