这是我的第一个蜘蛛代码。当我在我的 cmd 中执行此代码时。日志显示 URL 甚至没有被抓取,并且其中没有 DEBUG 消息。 无法在任何地方找到解决此问题的任何方法.. 我不明白出了什么问题。有人可以帮我解决这个问题吗。
我的代码:
class Event {
final String eventName;
final DateTime eventStartTime;
final String eventDuration;
final DateTime eventDate;
final String eventDescription;
final String agentId;
final String agencyId;
日志:
import scrapy
class QuotesSpider(scrapy.Spider):
name = "quotes_spider"
def start_request(self):
urls = ["http://quotes.toscrape.com/page/1/",
"http://quotes.toscrape.com/page/2/",
"http://quotes.toscrape.com/page/3/"
]
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
page = response.url.split("/")[-2]
filename = 'quotes-%s.html'% page
with open(filename, 'wb') as f:
f.write(response.body)
self.log('Saved file %s' % filename)
答案 0 :(得分:1)
注意:因为我没有 50 的声誉可以发表评论,所以我在这里回答。
问题在于函数命名,你的函数应该是 def start_requests(self)
而不是 def start_request(self)
。
要执行的第一个请求是通过调用 start_requests() 方法获得的,该方法(默认情况下)为 URL 生成请求。但是,在您的情况下,它永远不会进入该功能,因为永远不会对这些 URL 发出请求。
小改动后的代码
import scrapy
class QuotesSpider(scrapy.Spider):
name = "quotes_spider"
def start_requests(self):
urls = ["http://quotes.toscrape.com/page/1/",
"http://quotes.toscrape.com/page/2/",
"http://quotes.toscrape.com/page/3/"
]
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
page = response.url.split("/")[-2]
filename = 'quotes-%s.html'% page
with open(filename, 'wb') as f:
f.write(response.body)
self.log('Saved file %s' % filename)