当前位置: 首页 > 知识库问答 >
问题:

有时会用Scrapy-Works下载图片时遇到麻烦

洪承天
2023-03-14

到目前为止,我的蜘蛛代码一直运行得很好,但现在当我尝试运行一批这些蜘蛛时,所有的东西都正常工作,只是有些蜘蛛,scrapy下载了图像,其余的什么都没有。除了start_urls之外,所有的蜘蛛都是相同的。感谢任何帮助!

这是我的管道

from scrapy.contrib.pipeline.images import ImagesPipeline
from scrapy.exceptions import DropItem
from scrapy.http import Request

class DmozPipeline(object):
    def process_item(self, item, spider):
    return item

class MyImagesPipeline(ImagesPipeline):
    def get_media_requests(self, item, info):
       for image_url in item['image_urls']:
        yield Request(image_url)

        for nlabel in item['nlabel']:
        yield Request(nlabel)

        print item['image_urls']


def item_completed(self, results, item, info):
    image_paths = [x['path'] for ok, x in results if ok]
    if not image_paths:
        raise DropItem("Item contains no images")
    item['image_paths'] = image_paths
    return item

settings.py:

BOT_NAME = 'dmoz2'
BOT_VERSION = '1.0'

SPIDER_MODULES = ['dmoz2.spiders']
NEWSPIDER_MODULE = 'dmoz2.spiders'
DEFAULT_ITEM_CLASS = 'dmoz2.items.DmozItem'
ITEM_PIPELINES = ['dmoz2.pipelines.MyImagesPipeline']
IMAGES_STORE = '/ps/dmoz2/images'
IMAGES_THUMBS = {
#letting height be variable
#'small': ('', 120),
'small': (120, ''),
#'big': ('', 240),
'big': (300, ''),
}


USER_AGENT = '%s/%s' % (BOT_NAME, BOT_VERSION)

items.py:

from scrapy.item import Item, Field
from scrapy.utils.python import unicode_to_str

def u_to_str(text):
   unicode_to_str(text,'latin-1','ignore')


class DmozItem(Item):
   category_ids = Field()
   ....
   image_urls = Field()
   image_paths = Field()

   pass

myspider.py:

from scrapy.spider import BaseSpider
from scrapy.spider import Spider
from scrapy.selector import HtmlXPathSelector
from scrapy import Selector
from scrapy.utils.url import urljoin_rfc
from scrapy.utils.response import get_base_url
from dmoz2.items import DmozItem

class DmozSpider(Spider):
   name = "fritos_jun2015"
   allowed_domains = ["walmart.com"]
   start_urls = [

    "http://www.walmart.com/ip/Fritos-Bar-B-Q-Flavored-Corn-Chips-9.75- oz/36915853",
    "http://www.walmart.com/ip/Fritos-Corn-Chips-1-oz-6-count/10900088",

]


def parse(self, response):
    hxs = Selector(response)
    sites = hxs.xpath('/html/body/div[1]/section/section[4]/div[2]')
    items = []
    for site in sites:
        item = DmozItem()
        item['category_ids'] = ''
        .....
        item['image_urls'] = site.xpath('div[1]/div[3]/div[1]/div/div/div[2]/div/div/div[1]/div/div/img[2]/@src').extract()
        items.append(item)
    return items

我真的很想知道为什么这只蜘蛛有时会抓取图像,而有时却不抓取图像。除了来自同一个allowed_domain的start_url之外,所有的蜘蛛都是相同的。而且图像都是绝对路径,路径是正确的。

提前道谢。-TM

共有1个答案

阳长恨
2023-03-14

当屏幕刮擦时,一个常见的问题是服务器会切断连接,因为您尝试访问它的次数太多(以防止屏幕刮擦器无意中删除他们的网站,并防止成本上升,因为有人每毫秒ping他们的网站,等等)。

尝试添加

sleep()

方法。这样您就不会被阻止访问服务器

 类似资料:
  • 当我尝试使用带有Scrapy的蜘蛛下载图像时,会出现以下错误。 就我所能理解的而言,我好像在某个地方的url中少了一个“h”?但我一辈子也看不出在哪里。如果我不想下载图片,一切都正常。但是一旦我将适当的代码添加到下面的四个文件中,我就无法使任何东西正常工作。谁能帮我弄明白这个错误吗? items.py 设置.py pipelines.py products.py(我的蜘蛛) 如有任何帮助,将不胜感

  • 问题内容: 我的Android应用程序具有登录屏幕,并且用户登录到他的仪表板。但是我不希望用户每次关闭应用程序并启动时都进行登录(除非他们从仪表板上注销)。因此,我创建了一个类来检查用户是否登录 CheckLoggedIn.java 当用户登录时,我将布尔值更改为,并在注销时更改。但是,当我通过成功登录并关闭并再次启动进行检查时,它仍然进入LoginActivity。为什么? 编辑:现在,我明白这

  • 我用python scrapy编写了一个脚本,从一个网站下载一些图片。当我运行我的脚本时,我可以在控制台中看到图像的链接(它们都是格式)。然而,当我打开下载完成时应该保存图像的文件夹时,我什么也没有看到。我犯错的地方? 这是我的蜘蛛(我正在从Sublime文本编辑器运行): 这是我在中为要保存的图像定义的内容: 为了让事情更清楚: 我希望保存图像的文件夹名为,我已将其放在项目下的文件夹中。 文件夹

  • 问题内容: 试图了解如何在Go中解组XML。通读多个示例和stackoverflow问题。我想要的是一个切片,其中包含系统上安装的所有修补程序。我什至无法解开补丁,没有错误,只是一片空白。可能所做的事情基本上是错误的,在此先感谢您的任何建议。 问题答案: 我认为您遇到的问题是程序包未填充未导出的字段。xml文档说: 因为Unmarshal使用了反射包,所以它只能分配给导出的(大写)字段。 您要做的

  • 我是新来的React Native,刚刚用React Native init rnapp命令创建了一个应用程序,它发出了许多警告: 然后我转到android文件夹并运行以下命令: 但我明白了: * 有人知道如何修复这个问题,并在这个空应用程序上为Android构建apk文件吗?

  • 我想在我的Mac(OS X 10.10.3)中安装git。我写:brew install git 但它报告说: 更让我困惑的是,在我的finder:/usr/local/中,“include”和“lib”应该是文件夹,但却变成了文件。我怎样才能解决错误“找不到OTool”和安装git与brew和 为什么我的库和包含文件夹变成文件?...谢谢你的帮助!