自动添加字段如果存在于scrapy中

时间:2017-01-24 14:43:29

标签: python scrapy web-crawler

写一个蜘蛛来抓一个网站,但是遇到了问题。 有一个像下面的代码块。我想写一个蜘蛛抓取<li>标签内的所有<ul>标签来提取href属性并将其存储在增量变量中,例如Field1Field2Field3等,“字段”保持不变,数字值会随着<li>个标记的增加而增加

示例Html :(不要将原始html放在一起)

<ul class="l-itemcassette l-space_medium">

    <li>
        <a href="#">Link</a>
    </li>

    <li>
        <a href="#">Link</a>
    </li>

    <li>
        <a href="#">Link</a>
    </li>

    <li>
        <a href="#">Link</a>
    </li>
</ul>

使用css选择器时遇到xpath问题。

1 个答案:

答案 0 :(得分:2)

您可以使用enumerate()覆盖response.css()response.xpath()来索引匹配的href属性值:

In [1]: {'Field%d' % index: link 
         for index, link in enumerate(response.css("ul.l-itemcassette.l-space_medium li a::attr('href')").extract(), start=1)}
Out[1]: 
{'Field1': u'#link1',
 'Field2': u'#link2',
 'Field3': u'#link3',
 'Field4': u'#link4'}

请注意,我已为演示目的分配了不同的href值。