gpt4 book ai didi

python - 用scrapy下载图片

转载 作者:太空狗 更新时间:2023-10-29 21:18:58 24 4
gpt4 key购买 nike

我从 scrapy 开始,我遇到了第一个真正的问题。它正在下载图片。这是我的蜘蛛。

from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.selector import HtmlXPathSelector
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from example.items import ProductItem
from scrapy.utils.response import get_base_url

import re

class ProductSpider(CrawlSpider):
name = "product"
allowed_domains = ["domain.com"]
start_urls = [
"http://www.domain.com/category/supplies/accessories.do"
]

def parse(self, response):
hxs = HtmlXPathSelector(response)
items = []
sites = hxs.select('//td[@class="thumbtext"]')
number = 0
for site in sites:
item = ProductItem()
xpath = '//div[@class="thumb"]/img/@src'
item['image_urls'] = site.select(xpath).extract()[number]
item['image_urls'] = 'http://www.domain.com' + item['image_urls']
items.append(item)
number = number + 1
return items

当我以这种方式在 settings.py 中引用 ITEM_PIPELINESIMAGES_STORE 时,我得到了我要下载的图片的正确 URL(复制粘贴它进入浏览器进行检查)。

但是当我取消引用那些我得到以下错误:

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

而且我不能下载我的照片。

我搜索了一整天,没有找到任何有用的信息。

最佳答案

我认为您抓取的图片 URL 是相对的。要构造绝对 URL,请使用 urlparse.urljoin :

def parse(self, response):
...
image_relative_url = hxs.select("...").extract()[0]
import urlparse
image_absolute_url = urlparse.urljoin(response.url, image_relative_url.strip())
item['image_urls'] = [image_absolute_url]
...

还没有使用 ITEM_PIPELINES,但是 docs说:

In a Spider, you scrape an item and put the URLs of its images into a image_urls field.

因此,item['image_urls'] 应该是图像 URL 列表。但是你的代码有:

item['image_urls'] = 'http://www.domain.com' + item['image_urls']

所以,我猜它会逐个字符地迭代您的单个 URL - 将每个用作 URL。

关于python - 用scrapy下载图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8773732/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com