这是一个Python脚本,我正在学习一些材料书。 这是一个简单的网页抓取样本。 我可以毫无例外地运行它,但是运行它似乎没有实际收集到任何数据。 所以我过去的代码吼叫,有人可以尝试运行它,让我知道它是否适合你?因为这是学习样本,我不认为它是错误的,或者我的python库不匹配。谢谢你
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)
Scrapy spider回调方法可以返回(或产生)两件事:
在共享的代码中有第一个请求(针对
start_urls
中定义的站点),并且parse
方法是所有请求的默认回调方法(如果未指定callback
参数)该
parse
方法应该返回一个项或请求,而您并没有这样做,因此应该对其进行如下更改:现在您的spider正在输出一个项(在本例中称为
dict
)相关问题 更多 >
编程相关推荐