我创建了一个带有几个管道步骤的Scrapy Crawler。爬虫是一个更大的框架的一部分,它需要爬虫返回一个解析的项目列表。
在Scrapy中,我实现了一个包含几个规范化步骤的管道。由于Scrapy是更大的框架的一部分-如果我可以在通过整个管道后将项目返回到爬虫和/或框架,那就太好了。有没有办法做到这一点?
例如一些伪代码
url = 'http://somewebsite.com'
crawler = MyCrawler(url)
# each parsed website passes each pipeline step and is yielded / returned
架构概述:
语言:使用类库执行爬虫任务的C# Windows项目
我目前正在编写一个接口(UI),用于“调试”我编写的爬虫(或一组爬虫器)。每个爬虫都是一个.dll。
在接口中,我将调用.dlls,我不想等待它们结束任务(在内部爬行、解析和构建元素列表)来在接口上显示结果。
问题:
我是否可以以某种方式从.dll向界面发送反馈信息?
也许是一个进度条,或者在读取元素之后,在界面上显示它们,然后再爬行下一个元素?
我想要的是这样的东西在界面上实时显示(网格视图或其他东西)。
Finished Crawling College X
Finished Crawling College Y
Probl
我只是将一个较旧的项目升级到Python3.6,发现有这些很酷的新异步/等待关键字。
我的项目包含一个网络爬虫,这是目前还不是很好的表现,大约需要7分钟才能完成。现在,由于已经有了django restframework来访问django应用程序的数据,所以我认为最好有一个REST端点,在那里我可以通过一个简单的POST请求从远程启动爬虫。
但是,我不希望客户端同步等待爬虫完成。我只想马上给他发送信息,说爬虫已经启动,并在后台启动爬虫。
from rest_framework import status
from rest_framework.decorators import api_vie
我在启动同一爬虫的多个实例时被卡住了。我想让它像一个爬虫实例的1url一样运行。我必须处理50k个urls,为此,我需要为每个urls启动单独的实例。在我的主要爬虫脚本中,我设置了7分钟的closedpider超时,以确保我不会爬行很长时间。请参考下面的代码:
from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings
import urlparse
for start_url in all_urls:
domain = urlparse.urlpars
我在VB中有MultiThreading的例子。Net,我使用线程到爬虫站点,我有一个问题:
我必须更新才能锁定sql查询select top 1 link from tblSite where process =0和I update process =1,End syncLock
我抓取带有链接内容,并在DB中更新LastUpdate,进程= 0...。。
我做的很慢,我能帮助你提高多线程的性能吗?我常用蜘蛛吗?
我正在编写一个爬虫从网站上获取项目的名称。该网站每页有25个项目和多个页面(某些项目类型为200个)。
代码如下:
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.selector import HtmlXPathSelector
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from lonelyplanet.items import LonelyplanetItem
class LonelyplanetSpider(Craw
给定一个类似树的结构,以及一个获取节点子节点的操作,例如:
typealias NodeReference = URL
data class Node(
val data:Data,
val childrenList:List<NodeReference>)
suspend fun resolve(nodeRef:NodeReference) : Node
您知道实现具有签名的爬虫功能的蓝图吗?
fun nodeList(rootNode:NodeReference) : List<Node> =
runBlocking(..
给出了从代码中运行scrapy爬虫的许多方法:
import scrapy
from scrapy.crawler import CrawlerProcess
class MySpider(scrapy.Spider):
# Your spider definition
...
process = CrawlerProcess({
'USER_AGENT': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)'
})
process.crawl(MySpider)
process.
我有这样的代码: def somefunc(self):
...
if self.mynums>= len(self.totalnums):
if 1 == 1: return self.crawlSubLinks()
for num in self.nums:
if not 'hello' in num: continue
if 0 == 1:
#if though this is never reached, when using yiel
我们目前有一个web爬虫为我们的客户端,没有能力为我们提供一个xml文件。名单正在建立,所以我需要有一个更有效的方式来抓取这些网站。爬虫的逻辑很简单:
Pass in www.example.com/widgets
Store the html and pass it to crawler function
crawl widgets page 1
IF widgets page 1 is the end of their product list
stop
else
go to widgets page 2
这对队列中的每个站点都是重复的。如您所见,如果Site 1有50