我很难弄清楚Scrapy是如何工作的(或者我需要如何使用它)。 这个问题有点宽泛 - 更多的是为了理解。
我设置了一个CrawlSpider并投入了6个开始网址 从那些(每个起始网址的24个项目)我预计大约144行最终在我的数据库中,但我现在只有18个。
所以我正在使用
def parse_start_url(self, response):
以避免现在的规则复杂化。
现在,Scrapy应该使用这6个URL并抓取它们,然后处理这些页面上的项目。
但相反,似乎需要这6个网址然后检查这些网页上的每个链接并首先跟踪这些链接 - 这可能吗?
Scrapy是否只使用URL 1,扫描所有链接并遵循允许的所有内容?
什么时候需要URL 2?
答案 0 :(得分:3)
您可以在official documentation page找到答案,但为了完整起见,我会将其粘贴到此处:
默认情况下,Scrapy使用LIFO队列存储待处理的请求, 这基本上意味着它以DFO顺序爬行。这个订单更多 在大多数情况下方便。如果您确实想要以真正的BFO顺序进行爬网, 您可以通过设置以下设置来完成此操作:
mysql_query(" INSERT INTO tz_members(usr,pass,email,regIP,dt)
VALUES(
'".$_POST['username']."',
'".md5($pass)."',
'".$_POST['email']."',
'".$_SERVER['REMOTE_ADDR']."',
NOW()
)");
if(mysql_affected_rows($link)==1)
{
send_mail( 'info@mydomain.com',
$_POST['admin'],
'Registration System- - Your New Password',
'Your password is: '.$pass);
$_SESSION['msg']['reg-success']='We will send you an email with your new password! (within 24 hrs)';
}
else $err[]='This username is already taken!';
}
if(count($err))
{
$_SESSION['msg']['reg-err'] = implode('<br />',$err);
}
header("Location: demo.php");
exit;
}
注意:强> 您描述抓取订单的方式通常称为DFS(深度优先搜索)或BFS(广度优先搜索)。 Scrapy使用DFO和BFO(&#39; O&#39;用于&#39;命令&#39;,但意思相同)。