过去10个月来,我一直在用Python构建爬虫。 该搜寻器正在使用线程和队列来保存所有已访问和未访问的链接。
我使用BeautifulSoup并请求访问URL,并选择页面标题,元描述,关键字,CMS系统等等。
目前,搜寻器检查第一个种子url中的数据,并在完成爬取数据后,在单个线程中从当前页面中找到新链接,然后不断重复自身。
一切正常,除了当我想停止抓取过程时,它不会停止线程,而是保持运行,我添加了一个锁定变量来计算被抓取的页面数量,但是以某种方式它阻止了抓取到达爬网时,将执行此过程,而不执行链接过程。
下面的设置会更好吗?
此类将利用Threads查找网页上的所有链接,或者如果设置了限制,则仅返回请求的链接。
此类将遍历从Link类返回的所有链接,并使用线程收集请求的数据。
如果创建新设置,则Link类会将请求发送到url,Scrapper类也会发送请求。
因此,如果我的链接类应返回100个网址,那么我将至少向该URL发送100个请求,并且当Scrapper类通过链接任务找到的链接时,它会再发送100个请求。
所以我最终没有发送100个请求,而是发送了200个请求。
您有什么建议?