关于项目、装载机和管道的代码审查和问题

2024-09-24 02:26:07 发布

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

我想刮一些网站(50+),这是所有类似的性质,但会有稍微不同的信息对每一个。最终,这将进入一个数据库,但我还想导出到csv。你知道吗

所以我要做的是,建立一个模板,在每个网站上使用,基本上,设置所有可能的字段,以刮到。但是,每个字段并不适用于每个网站。因此在这些情况下,我希望数据以与“完美站点”(包含所有字段的站点)相同的格式进行刮取对那些不适用的只留空格。你知道吗

以下是我的文件:

你知道吗项目.py你知道吗

import scrapy

class ProjectItem(scrapy.Item):
    name = scrapy.Field()
    address1 = scrapy.Field()
    address2 = scrapy.Field()
    address3 = scrapy.Field()
    city = scrapy.Field() 
    random1 = scrapy.Field()
    random2 = scrapy.Field()
    random3 = scrapy.Field()

你知道吗蜘蛛.py你知道吗

from scrapy.spiders import Spider
from Projct.items import ProjectItem
from scrapy.http import request

class MySpider(Spider):
    name            = "ENTER NAME"
    allowed_domains = ["ENTER ALLOWED DOMAINS"]
    start_urls      = ["ENTER START URL"]

    def parse(self, response):

        ''' Selectors '''
        name = response.xpath('ENTER XPATH').extract()
        address1 = response.xpath('').extract()
        address2 = response.xpath('').extract()
        address3 = response.xpath('').extract()
        city = response.xpath('').extract()
        random1 = response.xpath('').extract()
        random2 = response.xpath('').extract()
        random3 = response.xpath('').extract()

        ''' Items '''
        html = response.xpath('ENTER ALL HTML XPATH').extract()
        for html in htmls:
            item = ProjectItem()
            item["name"] = name
            item["address1"] = address1
            item["address2"] = address2
            item["address3"] = address3
            item["city"] = city
            item["random1"] = random1
            item["random2"] = random2
            item["random3"] = random3
            yield item

目前我有三个主要问题:

  1. 这是设置蜘蛛的正确/有效方法吗?你知道吗
  2. 如何处理空值?即,如果任何值不在 网站我刮,我怎么能有它没有占位符 有价值吗?你知道吗
  3. 如何实现加载程序和管道?我已经读了文档,但不知道该把它放在我的代码里?你知道吗

希望这是有意义的,对此的任何其他一般性评论都将不胜感激!你知道吗


Tags: nameimportcityfield网站responseextractitem