質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Scrapy

Scrapyは、Pythonで開発されたオープンソースソフトウェアです。スクレイピングという、Webサービスから必要な情報を取り出したり自動操作をしたりする技術を使うものです。

Q&A

0回答

1705閲覧

ScrspyでFiles Pipelineを用いる画像収集で,URLだけでなく画像ファイル自体を保存できずに困っています.

vbxy95xwy

総合スコア10

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Scrapy

Scrapyは、Pythonで開発されたオープンソースソフトウェアです。スクレイピングという、Webサービスから必要な情報を取り出したり自動操作をしたりする技術を使うものです。

0グッド

0クリップ

投稿2019/01/31 14:50

編集2019/02/01 03:40

前提・実現したいこと

ScrapyでFiles Pipelineを用いてYahoo!ニュースのトピックス記事内の画像をcsvに保存したいです.

下記コードで画像をFILES_STOREで指定したディレクトリに保存したかったのですが,URLが取得できるのみで画像ファイル自体が収集できません.どうすればURLだけでなく,画像ファイルも保存できるのでしょうか?

items.py

python

1import scrapy 2 3class Headline(scrapy.Item): 4 """ 5 ニュースのヘッドラインを表すItem。 6 """ 7 title = scrapy.Field() 8 body = scrapy.Field() 9 image_url = scrapy.Field() 10 images = scrapy.Field()

setting.py

python

1BOT_NAME = 'myproject' 2SPIDER_MODULES = ['myproject.spiders'] 3NEWSPIDER_MODULE = 'myproject.spiders' 4FILES_STORE = 'images' 5 6ROBOTSTXT_OBEY = True 7DOWNLOAD_DELAY = 1 8 9ITEM_PIPELINES = { 10 'scrapy.pipelines.files.FilesPipeline': 1 11} 12

news_crawl.py

from scrapy.spiders import CrawlSpider, Rule from scrapy.linkextractors import LinkExtractor from myproject.items import Headline class NewsCrawlSpider(CrawlSpider): name = "news_crawl" # Spiderの名前。 # クロール対象とするドメインのリスト。 allowed_domains = ["news.yahoo.co.jp"] # クロールを開始するURLのリスト。 start_urls = ( 'http://news.yahoo.co.jp/', ) # リンクをたどるためのルールのリスト。 rules = ( # トピックスのページへのリンクをたどり、レスポンスをparse_topics()メソッドで処理する。 Rule(LinkExtractor(allow=r'/pickup/\d+$'), callback='parse_topics'), ) def parse_topics(self, response): """ トピックスのページからタイトルと本文と画像を抜き出す。 """ item = Headline() item['image_url'] = response.css('div.headlinePic a span.image img::attr("data-src")').extract_first() item['title'] = response.css('.newsTitle ::text').extract_first() item['body'] = response.css('.hbody').xpath('string()').extract_first() yield item

補足情報(FW/ツールのバージョンなど)

Scrapy 1.5.2
Python 3.6.5

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問