3
3

More than 3 years have passed since last update.

製薬企業研究者がPythonを用いたウェブスクレイピングについてまとめてみた

Posted at

はじめに

ここでは、Pythonを用いたウェブスクレイピングについて解説します。

BeautifulSoup

以下のHTMLファイルを表示するウェブページに対してクローリング、スクレイピングを行うとします。

<ul class="list-group">
  <li class="list-group-item"><a href="">要素1</a></li>
  <li class="list-group-item"><a href="">要素2</a></li>
  <li class="list-group-item"><a href="">要素3</a></li>
</ul>

Pythonスクリプトは以下のようになります。

import requests
from bs4 import BeautifulSoup


url = HTMLを取得するURL
response = requests.get(url)
response.encoding = response.apparent_encoding

bs = BeautifulSoup(response.text, 'html.parser')

ul = bs.select('ul.list-group')

for li in ul[0].select('li.list-group-item'):
    a_tags = li.select('a')
    a_tag = a_tags[0]
    item_name = a_tag.text.strip()

Scrapy

上のBeautifulSoupを用いる場合と同様のHTMLファイルに対してクローリング、スクレイピングを行うとします。

<ul class="list-group">
  <li class="list-group-item"><a href="">要素1</a></li>
  <li class="list-group-item"><a href="">要素2</a></li>
  <li class="list-group-item"><a href="">要素3</a></li>
</ul>
import scrapy


class SampleSpider(scrapy.Spider):
    name = 'sample'
    allowd_domains = [ドメイン]
    start_urls = [
        対象URL
    ]

    def parse_list(self, response):
        ul = response.css('ul.list-group')[0]
        for li in ul.css('li.list-group-item'):
            item_url = li.css('a::attr(href)').extract_first()

            yield scrapy.Request(item_url, callback=parse_detail)

    def parse_detail(self, response):
        item_name = response.css('h1.item-name::text').extract_first()
        return item_name

まとめ

ここでは、BeautifulSoupおよびScrapyを用いたウェブスクレイピングの方法について解説しました。

参考資料・リンク

プログラミング言語Pythonとは?AIや機械学習に使える?

3
3
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
3
3