LoginSignup
1
4

More than 5 years have passed since last update.

【Scrapy】トップページから各記事のクローリング

Posted at

ICS MEDIAのトップページからだと各記事の"更新日"がわからない。
エンジニアにとってその情報がメンテされているかどうかの方が、"投稿日"よりも重要だったりするので、"更新日"を一覧で見えるように取得してみた。

▼流れ
- Itemsでデータ構造をつくる
- トップページにアクセスし、話題の記事のURLをスクレイピング
- 各記事をクローリングして、各ページの情報をスクレイピング

Items

まずデータ構造の定義を行うため、items.py に以下を追加する

items.py
class ArticlesItem(scrapy.Item):
    url = scrapy.Field()
    title = scrapy.Field()
    dateModified = scrapy.Field()

Requests and Responses

エントリポイントのページからさらに深くクローリングするため、リクエストを投げる

ics_request.py
# -*- coding: utf-8 -*-
import scrapy
from tutorial.items import ArticlesItem

class IcsRequestSpider(scrapy.Spider):
    name = 'ics_request'
    allowed_domains = ['ics.media']

    start_urls = ['https://ics.media/']

    def parse(self, response):
        for href in response.css('.groupFeatures > div a.thumb::attr(href)'):
            yield scrapy.Request(href.extract(), callback=self.parse_item)

    def parse_item(self, response):
        item = ArticlesItem()
        item['url'] = response.url
        item['title'] = response.css('.pageTitle span::text').extract_first()
        item['dateModified'] = response.css('time[itemprop="dateModified"]::attr(datetime)').get()

        yield item

実行

scrapy crawl ics_request -o ics-request.json
ics-request.json
[
    {
        "dateModified": "2018-03-23", 
        "title": "現場で使えるwebpack 4入門 – JS開発のモジュールバンドラ", 
        "url": "https://ics.media/entry/12140"
    }, 
    {
        "dateModified": "2018-03-13", 
        "title": "絶対つまずかないGulp入門(2018年版) – インストールとSassを使うまでの手順", 
        "url": "https://ics.media/entry/3290"
    }, 
    {
        "dateModified": "2017-10-23", 
        "title": "人工知能Adobe Senseiの画像処理が凄すぎてAdobe MAX 2017の会場は狂喜乱舞に", 
        "url": "https://ics.media/entry/16643"
    }, 
    {
        "dateModified": "2018-03-13", 
        "title": "CSS Grid Layout入門。対応ブラウザが出揃った新しいレイアウト仕様", 
        "url": "https://ics.media/entry/15649"
    }
]

参考
PythonとかScrapyとか使ってクローリングやスクレイピングするノウハウを公開してみる!

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4