我正在研究废网站。我只想提取那些在上一次运行中没有被刮取的项目。 我正在“https://www.ndtv.com/top-stories”网站上尝试,如果更新了,只提取第一个标题。
以下是我的代码:
import scrapy
from selenium import webdriver
from w3lib.url import url_query_parameter
class QuotesSpider(scrapy.Spider):
name = "test"
start_urls = [
'https://www.ndtv.com/top-stories',
]
def parse(self, response):
print ('testing')
print(response.url)
yield {
'heading': response.css('div.nstory_header a::text').extract_first(),
}
DOWNLOADER_MIDDLEWARES = {
'scrapy_crawl_once.CrawlOnceMiddleware': 100,
}
SPIDER_MIDDLEWARES = {
#'inc_crawling.middlewares.IncCrawlingSpiderMiddleware': 543,
'scrapy.contrib.spidermiddleware.referer.RefererMiddleware': True,
'scrapy_deltafetch.DeltaFetch': 100,
'scrapy_crawl_once.CrawlOnceMiddleware': 100,
'scrapylib.deltafetch.DeltaFetch': 100,
'inc_crawling.middlewares.deltafetch.DeltaFetch': 100,
}
COOKIES_ENABLED = True
COOKIES_DEBUG = True
DELTAFETCH_ENABLED = True
DELTAFETCH_DIR = '/home/administrator/apps/inc_crawling'
DOTSCRAPY_ENABLED = True
我已经在中更新了上面的代码设置.py文件:
我使用“scrapy crawl test-o”运行上述代码测试.json然后在每个文件之后运行.db命令测试.json更新文件。
所以,我的期望是只要第一个标题被更新,然后.db才会更新。
请帮助我,如果有任何更好的方法来提取更新的标题。
实现这一点的一个好方法是在执行实际请求之前重写^{} 来检查数据库。在
Scrapy使用dupefilter类避免两次获得相同的请求,但它只适用于运行spider的。在
相关问题 更多 >
编程相关推荐