0

我尝试使用以下代码在 cdiscount 上抓取卖家页面:

# -*- coding: utf-8 -*-
import scrapy
import re
import numbers
from cdiscount_test.items import CdiscountTestItem
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule

f = open('item.csv', 'w').close()

class CdiscountsellersspiderSpider(scrapy.Spider):
    name = 'CDiscountSellersSpider'
    allowed_domains = ['cdiscount.com']
    start_urls = ['http://www.cdiscount.com/mpvv-47237-EANTECHNOLOGY.html']

    def parse(self, response):
        for sel in response.xpath('//html/body'):
                item = CdiscountTestItem()
            list_urls = sel.xpath('//@href').extract()
            for url in list_urls:
                item['list_url'] = url
                yield scrapy.Request(url, callback=self.parsefeur, meta={'item': item})

    def parsefeur(item, response):
        item = response.request.meta['item']
#etc other lines...

我总是有一个类型的错误:

raise ValueError('Missing scheme in request url: %s' % self._url)
ValueError: Missing scheme in request url:

我在这个网站上找到了一些解决 ':h' 错误的方法,但没有一个解决了我的 ':favicon.io' 错误......

第 58 行 doc init .py 中的错误:

if ':' not in self._url:

但是我不明白这一行,o我无法修改它......

请问有没有人可以帮助我?

4

1 回答 1

1

您必须注意,因为除了a包含href属性之外还有更多元素(我在这里假设您的意图是获取a元素)。

此外,您必须小心相对链接。除非您确定链接是绝对链接,否则请使用response.urljoin()方法获取绝对链接(请参阅文档)。

于 2017-06-23T05:30:22.713 回答