Scrapy爬虫不写入Postgres

2024-10-03 00:30:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从一个网站的几页中删除一些条目,然后放到postgres数据库中。我尝试了不同的代码,但仍然没有工作,我的数据库仍然是空的。。。你知道吗

如何将网站页面中的项目废弃到Postgres数据库? 我的代码怎么了?

我将向您展示最新版本的代码:

Myspider.py公司

#!/usr/bin/env python
#-*- coding: utf-8 -*-

import scrapy, os, re, csv
from scrapy.spiders import CrawlSpider, Rule, Spider
from scrapy.linkextractors import LinkExtractor
from scrapy.selector import Selector
from scrapy.loader import ItemLoader
from scrapy.loader.processors import Join, MapCompose
from scrapy.item import Item, Field
from AHOTU_V2.items import AhotuV2Item 

def url_lister():
    url_list = []
    page_count = 0
    while page_count < 10: 
        url = 'https://marathons.ahotu.fr/calendrier/?page=%s' %page_count
        url_list.append(url)
        page_count += 1 
    return url_list

class ListeCourse(CrawlSpider):
    name = 'ListeCAP_Marathons_ahotu' 
    start_urls = url_lister()

    deals_list_xpath='//div[@class="list-group col-sm-12 top-buffer"]/a[@class="list-group-item calendar"]' 

    item_fields = AhotuV2Item()

    item_fields = {
        'nom_course': './/dl/dd[3]/text()',
        'localisation' :'.//dl/dd[2]/span[1]/text()',
    }


    def parse_item(self, response):
        selector = Selector(response)

        # iterate over deals
        for deal in selector.xpath(self.deals_list_xpath):
            loader = ItemLoader(AhotuV2Item(), selector=deal)

            # define processors
            loader.default_input_processor = MapCompose(unicode.strip)
            loader.default_output_processor = Join()

            # iterate over fields and add xpaths to the loader
            for field, xpath in self.item_fields.iteritems():
                loader.add_xpath(field, xpath)
            yield loader.load_item()  

Tags: 代码fromimport数据库urlfieldscountpage
2条回答

经过几个小时的寻找解决方案,我才意识到使用的方法是错误的,这就是蜘蛛不起作用的原因。你知道吗

MySpider.py公司

#!/usr/bin/env python
#-*- coding: utf-8 -*-

from scrapy.spiders import Spider
(...)

class ListeCourse(Spider):
(...)

我没有看到任何规则调用parse_item

你应该对你的类使用Spider,而不是CrawlSpider。改变

class ListeCourse(CrawlSpider):

class ListeCourse(Spider):

相关问题 更多 >