10

以下は私のスパイダーコードです、

class Blurb2Spider(BaseSpider):
   name = "blurb2"
   allowed_domains = ["www.domain.com"]

   def start_requests(self):
            yield self.make_requests_from_url("http://www.domain.com/bookstore/new")


   def parse(self, response):
       hxs = HtmlXPathSelector(response)
       urls = hxs.select('//div[@class="bookListingBookTitle"]/a/@href').extract()
       for i in urls:
           yield Request(urlparse.urljoin('www.domain.com/', i[1:]),callback=self.parse_url)


   def parse_url(self, response):
       hxs = HtmlXPathSelector(response)
       print response,'------->'

ここで、href リンクとベース リンクを結合しようとしていますが、次のエラーが発生します。

exceptions.ValueError: Missing scheme in request url: www.domain.com//bookstore/detail/3271993?alt=Something+I+Had+To+Do

このエラーが発生する理由と、ベース URL を href リンクに結合してリクエストを生成する方法を誰かに教えてもらえますか

4

3 に答える 3

15

これは、ベース URL に http:// などのスキームを追加していないためです。

試す:urlparse.urljoin('http://www.domain.com/', i[1:])

またはさらに簡単: urlparse.urljoin(response.url, i[1:])urlparse.urljoin はベース URL 自体を整理します。

于 2012-05-29T12:07:50.747 に答える