Python による Web スクレイピング: CSV をデータベースとして使用する
最近、とても興味深い要望がありました。ある人は、CSV を使用してある場所から別の場所にデータを移行していました。データは読書プロジェクトの書籍登録です。ある時点で、彼女は私にこう言いました。「さあ、残りの作業はロボットのためです。各タイトルの ISBN を取得する必要があります。」彼女が言ったように、それはロボットの仕事なので、ロボットにやらせたらどうでしょうか?
Sigla para International Standard Book Number.ログイン後にコピー
作品には複数の ISBN を含めることができます。これは、各エディションに独自の ISBN があるために発生します。この場合、メディアに互換性があれば、どの ISBN でも機能します。 CSVには以下が登録されました:
->電子ブック
->物理的
->オーディオ
ロジックを見てみましょう:
-> CSV ファイルをアップロードして開きます。
->タイトルの列を抽出します。
->メディア列を抽出します。
->各タイトルについて、ISBN で Google で検索してください。
->ページからタイトルを抽出します。
-> ISBN のリストを抽出します。
->メディアのリストを抽出します。
->登録メディアを確認し、最も近い ISBN を検索します。基準が見つからない場合は、リストの最初の項目を返します。
->後の検証のために、どのメディアから ISBN を取得したかを通知します。
必要なライブラリを見てみましょう:
import requests # para fazer as requisições from bs4 import BeautifulSoup # para manipular o html recebido import pandas as pd # para manipular os arquivos CSV import time import random # as duas são para gerarmos intervalos aleatórios de acesso
この書籍リストには 600 件以上の項目が含まれており、Google にブロックされたくないため、より人間的なスペースでランダム アクセスを行う予定です。また、ヘッダーを使用して、ページのブラウザー バージョンが必要であることを示します。これを行うには、ブラウザで「ネットワーク」に移動し、「User-Agent」を検索します。
Google で検索するには、次の URL パターンを使用します:
url_base = "https://www.google.com/search?q=isbn" # o que vem depois '=' é a pesquisa
URL にはスペースが含まれないことに注意してください。そのため、タイトル内のスペースは「 」に置き換えます。 pandas では、「スプレッドシート」は DataFrame と呼ばれ、その略語として df が使用されるのが非常に一般的です。最後に、おそらくあなたも私と同じように Windows を使用しているでしょう。その場合、システム アドレス バーは Unix に比べて重視されます。貼り付けた URL を取得し、それを他の形式に反転する関数を作成しましょう。
path = r"C:\caminho\livros.csv" def invert_url_pattern(url): return url.replace("\","/") path = invert_url_pattern(path) def search_book(path): url_base = "https://www.google.com/search?q=isbn" headers = { "User-Agent":"seu pc" } df = pd.read_csv(path, encoding='utf-8') books = df["Name"].tolist() media = df["media"].tolist() # vamos colocar as pesquisas aqui e depois inserir todas no DataFrame title_books = [] isbn_books = [] media_books = [] for index, book in enumerate(books): time.sleep(random.uniform(60, 90)) url = url_base + "+" + book.replace(" ", "+") req = requests.get(url, headers=headers) site = BeautifulSoup(req.text, "html.parser") #usamos as class para buscar o conteúdo title = site.find("span", class_="Wkr6U") isbns = site.find_all("div", class_="bVj5Zb") medias = site.find_all("div", class_="TCYkdd") #se algo falhar, retornamos uma string vazia if(title.text == None): title_books.append("") isbn_books.append("") media_books.append("") continue # No loop, o último item acessado será o mais recente, # pois percorremos a lista de cima para baixo. # Por isso, invertendo a lista de ISBNs, garantimos que # o mais novo de cada categoria seja processado por último. isbns = isbns[::-1] unified_data = {} for i in range(len(medias)): unified_data[medias[i].text] = isbns[i].text match media[index]: case "ebook": isbn_books.append(unified_data["Livro digital"]) media_books.append("Livro digital") case "fisical": isbn_books.append(unified_data["Livro capa dura"]) media_books.append("Livro capa dura") case "audio": isbn_books.append(unified_data["Audiolivro"]) media_books.append("Audiolivro") case _: isbn_books.append(unified_data[0]) media_books.append("") title_books.append(title.text) df["Titulo do Livro"] = title_books df["ISBN"] = isbn_books df["Tipo de Livro"] = media_books return df
さて、テストの準備はすべて整いました!テストできるように、私が受け取ったもののサンプル行を残しておきます。
Name | language | media |
---|---|---|
this other eden | ?? english | audio |
df = search_book(path) df.to_csv(invert_url_pattern("C:seu\caminho\para\salvar\nome_do_arquivo.csv"), encoding='utf-8', index=False)
この記事があなたのお役に立ち、日常生活で何かを自動化できることを願っています!
以上がPython による Web スクレイピング: CSV をデータベースとして使用するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

UvicornはどのようにしてHTTPリクエストを継続的に聞きますか? Uvicornは、ASGIに基づく軽量のWebサーバーです。そのコア機能の1つは、HTTPリクエストを聞いて続行することです...

Investing.comの反クラウリング戦略を理解する多くの人々は、Investing.com(https://cn.investing.com/news/latest-news)からのニュースデータをクロールしようとします。
