1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Pythonで絶対URL+相対URL(結合)でつまずいた件 [スクレイピング,クロール(クローリング),データ分析]

Last updated at Posted at 2022-01-28

##要は以下のようの処理を実装

https://www.対象のサイト.com (絶対URL) + /docs/101(相対URL)
           ↓
https://www.対象のサイト.com/docs/101 (絶対URL)としたい。
##①架空のDom構造を作る

from bs4 import BeautifulSoup

# <--実際のサイトでクロールver ※実際のサイトでクロールしたいときはコメントアウトをはずしてください

# from selenium import webdriver
# from selenium.webdriver.chrome.options import Options
# from time import sleep

# options = Options()
# #WebDriver(ブラウザ)の起動
# DRIVER_PATH = '/Users\あなたのUer名\Desktop\Selenium\chromedriver'

# driver = webdriver.Chrome(executable_path=DRIVER_PATH, chrome_options=options)

#//クロールver-->

#https://www.対象のサイト.com のhtmlが以下にあるとします.
html = """
<!DOCTYPE html>
<html lang="jp">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <div class="category">
      <div class="doc">
        <span class="s">タイトル: <a href="/docs/101">相対パス1</a></span>
      </div>
    </div>
    <div class="category">
      <div class="doc">
        <span class="s">タイトル: <a href="/docs/279">相対パス2</a></span>
      </div>
    </div>
    <div class="category">
      <div class="doc">
        <span class="s">タイトル: <a href="/docs/312">相対パス3</a></span>
      </div>
    </div>
</body>
</html>
"""

html = BeautifulSoup(html, 'html')

##➁相対パスを取得し、現在のURLと結合する
実際のサイトで現在のURLディレクトリを取得する場合は

base_join_url = driver.current_url

等にすると良いです。

for documents in categories_all:
    #aタグに相対パスがあるので
    documents_tag_a = documents.select('.doc a')[0]

    # hrefの値を取り出す
    href_link = documents_tag_a.get("href")

    # ベースURLと相対パスを結合する
    base_join_url = 'https://www.対象のサイト.com'
    links = base_join_url + href_link
    #確認
    print(links)

###https://www.対象のサイト.com/docs/101
https://www.対象のサイト.com/docs/279
https://www.対象のサイト.com/docs/312
上記のURLが取得でき、print出来ています。

#実際のURLでクロールしたい場合以下の処理を追加

# 実際のサイトでクロールver
#URLを開く
#     sleep(3)
#     driver.get(links)
#ブラウザバック
#
#     sleep(3)
#     driver.back()
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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?