首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何向scrapy中的每一行写入一个repeat元素

如何向scrapy中的每一行写入一个repeat元素
EN

Stack Overflow用户
提问于 2019-05-27 03:18:40
回答 2查看 71关注 0票数 1

我正在测试我的手艺,用scrapy刮。到目前为止的进展让我兴奋不已,我有一个问题,源网站的数据模型似乎与我目前的粗糙输出不一致。

Source提供类别、类型和URL数据--每个类别包含多个类型,并且每个类型都有一个URL。

我希望得到一个输出来维护数据的嵌套,其中每一行都与类别、类型和URL分组相关联。

XLM和CSV输出都提供唯一的类别,但在每个类别行的列中保存所有后续的类型和url数据。

源/示例站点:

代码语言:javascript
复制
<div class="box">
     <div class="coin-img coin-imgfile--9999 coin-img-3"></div>
     <div class="coin-heading">
     <h3>Half-Cents and Cents</h3>
</div>
<ul>
     <li><a href="/auctionprices/category/liberty-cap-half-cent-1793-1797/34">Liberty Cap Half Cent (1793-1797)</a></li>
     <li><a href="/auctionprices/category/draped-bust-half-cent-1800-1808/653">Draped Bust Half Cent (1800-1808)</a></li>
     <li><a href="/auctionprices/category/classic-head-half-cent-1809-1836/654">Classic Head Half Cent (1809-1836)</a></li>
</ul>
</div>
<div class="box">
     <div class="coin-img coin-imgfile--9999 coin-img-5"></div>
     <div class="coin-heading">
     <h3>Two and Three Cents</h3>
</div>
<ul>
     <li><a href="/auctionprices/category/two-cent-1864-1873/670">Two Cent (1864-1873)</a></li>
     <li><a href="/auctionprices/category/three-cent-silver-1851-1873/77">Three Cent Silver (1851-1873)</a></li>
     <li><a href="/auctionprices/category/three-cent-nickel-1865-1889/671">Three Cent Nickel (1865-1889)</a></li>
</ul>
</div>

工作爬虫抓取所有必要的数据,但没有按照需要格式化:

代码语言:javascript
复制
import scrapy

class PCGSSpider(scrapy.Spider):
    name = "pcgs_spider"
    custom_settings = {
        'FEED_FORMAT': 'xml',
        'FEED_URI': 'pcgsspider.xml'
    }
    start_urls = ['abovesample.html']

    def parse(self, response):
        SET_SELECTOR = '.box'
        for pcgs in response.css(SET_SELECTOR):

            CAT_SELECTOR = 'h3 ::text'
            TYPE_SELECTOR = './/ul/li/a/text()'
            URL_SELECTOR = './/ul/li/a/@href'
            yield {
                    'categories': pcgs.css(CAT_SELECTOR).extract(),
                    'types': pcgs.xpath(TYPE_SELECTOR).extract(),
                    'type_url': pcgs.xpath(URL_SELECTOR).extract(),
            }

XML显示正确的数据,但不是嵌套在每个URL及其类型和类型及其类别中

代码语言:javascript
复制
-<item>
-<categories>
    <value>Half-Cents and Cents</value>
</categories>
-<types>
    <value>Liberty Cap Half Cent (1793-1797)</value>
    <value>Draped Bust Half Cent (1800-1808)</value>
    <value>Classic Head Half Cent (1809-1836)</value>
</types>
-<type_url>
    <value>/auctionprices/category/lincoln-cent-wheat-reverse-1909-1958/46</value>
    <value>/auctionprices/category/lincoln-cent-modern-1959-date/47</value>
    <value>/auctionprices/category/lincoln-cent-modern-1959-date/47</value>
</type_url>
</item>

这一切都是新的,所以请原谅我的无知--似乎某种程度的迭代可以解决这个问题,尽管我不清楚是否在我的爬行器中是解决问题的最佳位置,因为数据和结构的核心是完整的。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56316656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档