这是一个Python Scrapy脚本,我正在从一些材料书中学习。 这是一个简单的Web抓取示例。 我可以毫无例外地运行它。但是运行它似乎实际上并没有收集到任何数据。 所以我经过下面的代码,有人可以尝试运行它,让我知道它是否对您有用吗?因为这是学习示例,我不认为这是错误的,或者我的python lib不匹配。谢谢。
import scrapy
from scrapy.crawler import CrawlerProcess
class PythonEventsSpider(scrapy.Spider):
name = 'pythoneventsspider'
start_urls = ['https://www.python.org/events/pythonevents/',]
found_events = []
def parse(self, response):
for event in response.xpath('//ul[contains(@class, "list-recent-events")]/li'):
event_details = dict()
event_details['name'] = event.xpath('h3[@class="event-title"]/a/text()').extract_first()
event_details['location'] = event.xpath('p/span[@class="event-location"]/text()').extract_first()
event_details['time'] = event.xpath('p/time/text()').extract_first()
self.found_events.append(event_details)
if __name__ == "__main__":
process = CrawlerProcess({ 'LOG_LEVEL': 'ERROR'})
process.crawl(PythonEventsSpider)
spider = next(iter(process.crawlers)).spider
process.start()
for event in spider.found_events: print(event)
答案 0 :(得分:0)
Scrapy spider回调方法可以返回(或产生)两件事:
在您共享的代码上,有一个第一个请求(针对if (foodHit != null) {
aShark.eatFood()
}
中定义的站点),并且src/main/resources/application.properties
方法是所有请求的默认回调方法(如果没有#setting to default locale
spring.mvc.locale=pt_BR
#force locale resolver to spring boot reconized your settings
spring.mvc.locale-resolver=fixed
参数已指定)。
该start_urls
方法应返回一个Item或一个Request,而您并未这样做,因此应将其更改为:
parse
现在,您的蜘蛛正在输出一个项目(在本例中为callback
的{{1}})。