記事ディレクトリ
1 はじめに
1.1 実施原則
これは元の原則と同じで、ChatGPT でのインタラクティブな Q&A に相当し、アプレットにマッピングされます.次の 3 つの主要な要素があります。
- データベースのモデリング
まず、書籍情報とユーザー情報を格納するためのデータベースを構築する必要があります。各書籍に関する情報には、タイトル、著者、出版社、ISBN 番号、出版日、価格などが含まれます。ユーザー情報には、ユーザー名、パスワード、メールアドレス、配送先住所などが含まれる場合があります。
- データの取得と処理
レコメンドシステムをより正確にするためには、ユーザーの読書履歴、購入記録、さらには検索記録を収集する必要があります。同時に、新刊本の分類ラベルをまとめて整理することも必要です。次に、ユーザーのこれまでの行動や趣味に応じて、推奨アルゴリズムを使用して、パーソナライズされた書籍の推奨リストを生成します。一般的なレコメンデーション アルゴリズムには、コンテンツ ベースのレコメンデーション、協調フィルタリングのレコメンデーション、ディープ ラーニングのレコメンデーションなどがあります。
- UI の最適化
書籍の推薦リストがユーザーに提示され、ユーザーはインターフェースを介して書籍を閲覧および購入できます。バックグラウンドで関連データを更新し、ユーザーの操作に基づいてレコメンデーション アルゴリズムを最適化して、レコメンデーションの品質と精度を向上させます。
1.2 ミニプログラムでの接続方法
-
要件を決定する: 推奨する書籍の種類、ユーザーの肖像、推奨アルゴリズムなど、プロジェクトの目標を明確にします。
-
UI デザイン: プロジェクトの要件とユーザーの習慣に従って、ミニ プログラムのインターフェイス レイアウト、配色、インタラクション方法などをデザインします。
-
データベースのモデリング: 要件に従ってデータベースを設計し、バックグラウンドで開発します。書籍情報、ユーザー情報、履歴データなどは、後続の計算プロセスでのクエリと分析のためにデータベースに保存する必要があります。
-
ユーザー認証: ミニ プログラムの開始時に、ユーザー情報と認証情報を取得して、その後の個人的な推奨事項を確認します。
-
推奨アルゴリズム: ユーザーのポートレートと過去の行動に従って、さまざまな推奨アルゴリズムを使用して推奨結果を生成します。
-
ページ レイアウトとレンダリング: UI デザインのスタイルと要件に従って、ページ レイアウトとレンダリングをフロント エンドに実装し、バック エンドから返されたデータを表示します。
-
最適化と改善: ユーザーからのフィードバックに基づいて、アルゴリズムとインタラクティブなエクスペリエンスを継続的に最適化し、レコメンデーションの精度とユーザー満足度を向上させます。
-
リリースとリリース: テスト、共同デバッグ、およびその他のリンクを実施して、ミニ プログラムの安定性とセキュリティを確保し、運用とプロモーションのためにリリースおよびリリースします。
1.3 技術アーキテクチャ
以下は、言語とフレームワーク、およびいくつかの重要なポイントを含む、使用する必要があるテクノロジ スタックです。
技術スタック | 言語/フレームワーク | テクニカルポイント |
---|---|---|
小さなプログラム開発フレームワーク | WeChat公式が提供するミニプログラムフレームワーク | アプレットの相互作用と表示効果を実現するためのフロントエンドインターフェースをすばやく構築します |
フロントエンド言語 | WXML、WXSS、JavaScript、VUE 2.0+ユニアプリ | アプレットのフロントエンド インタラクション ロジックとスタイル デザインを実現する |
バックエンド開発 | Node.js、Express.js、Python + Flask WEB | API インターフェイスを提供し、フロントエンドから送信されたリクエストを処理し、データベースと対話します |
データベース | MySQL、MongoDB | 蔵書情報、利用者情報、レコメンデーションデータなど |
ユーザー認証と承認 | WeChat オープン インターフェース | ユーザーログイン、認可、個人情報取得などの機能を実装 |
レコメンデーションアルゴリズム | コンテンツベースのレコメンデーション、協調フィルタリング、深層学習のレコメンドなど、Python + リクエスト | アルゴリズムによってユーザーが好きな本を計算し、クローラーのクロールに応じてユーザーに適した本をレコメンド |
サードパーティ API の統合 | 豆板読込API、ライブラリAPIなど | 他のサイトやサービスから書籍データを取得する |
2 クロールデータ
2.1 本のタイトルに基づくクロール情報
ライブラリを使用してrequests
Douban にリクエストを送信しHTTP GET
、検索結果を含むページを取得してから、BeautifulSoup
ライブラリを使用してHTML
ページを解析し、本の情報を抽出します。具体的な実装プロセスは次のとおりです。
-
検索リンクを構築する: 入力本のタイトルをパラメーターとして使用して、検索リンクを構築します。リンクの cat パラメータは、検索結果が本の種類であることを指定し、1001 は文学の本を示します。requests ライブラリを使用して HTTP GET 要求をリンクに送信し、検索結果を含むページを取得します。
-
検索結果ページを解析する: BeautifulSoup ライブラリを使用して検索結果ページを解析し、最初の検索結果へのリンクを抽出します。リンクに HTTP GET リクエストを送信して、書籍の詳細を含むページを取得します。
-
書籍の詳細ページの解析: BeautifulSoup ライブラリを使用して書籍の詳細ページを解析し、書籍名、著者、種類、出版社、出版時期などの情報を抽出します。
-
書籍情報を返す: 抽出した情報を関数の戻り値として辞書に保存します。
import requests
from bs4 import BeautifulSoup
def get_book_info(book_name):
# 构造亚马逊搜索页面的URL
url = f"https://www.amazon.com/s?k={
book_name}"
# 发送HTTP请求获取搜索页面内容
response = requests.get(url)
# 使用BeautifulSoup解析页面内容
soup = BeautifulSoup(response.content, 'html.parser')
# 从页面中获取第一个搜索结果的链接
result_link = soup.find('a', {
'class': 'a-link-normal s-no-outline'})
# 发送HTTP请求获取搜索结果页面内容
response = requests.get(result_link['href'])
# 使用BeautifulSoup解析页面内容
soup = BeautifulSoup(response.content, 'html.parser')
# 解析页面中的书籍信息
book_title = soup.find('span', {
'id': 'productTitle'}).text.strip()
book_author = soup.find('span', {
'class': 'author'}).find('a').text.strip()
book_genre = soup.find('a', {
'class': 'a-link-normal a-color-tertiary'}).text.strip()
book_publisher = soup.find('span', {
'class': 'publisher'}).find('a').text.strip()
book_publication_date = soup.find('span', {
'class': 'a-text-normal'}).text.strip()
# 返回书籍信息
return {
'title': book_title,
'author': book_author,
'genre': book_genre,
'publisher': book_publisher,
'publication_date': book_publication_date
}
実行してみてください
book_name = "Python编程:从入门到实践"
book_info = get_book_info(book_name)
print("书名:", book_info['title'])
print("作者:", book_info['author'])
print("类型:", book_info['genre'])
print("出版社:", book_info['publisher'])
print("出版时间:", book_info['publication_date'])
2.2 著者によるクロール情報
import requests
from bs4 import BeautifulSoup
def get_author_books_info(author):
# 构造亚马逊图书搜索链接
url = f"https://www.amazon.cn/s?k={
author}&i=stripbooks"
# 发送GET请求获取网页内容
response = requests.get(url)
response.encoding = "utf-8"
# 使用BeautifulSoup解析网页内容
soup = BeautifulSoup(response.text, "html.parser")
# 获取作者的个人信息
author_info = soup.find("div", {
"class": "a-section a-text-left s-align-children-center"})
# 获取搜索结果中的所有书籍信息
book_items = soup.find_all("div", {
"class": "s-result-item s-asin sg-col-0-of-12 sg-col-16-of-20 sg-col sg-col-12-of-16"})
# 遍历每个书籍信息,解析出经典小说列表
classic_books = []
for item in book_items:
book_title = item.find("span", {
"class": "a-size-medium a-color-base a-text-normal"})
if book_title:
book_title = book_title.text.strip()
if "经典" in book_title:
classic_books.append(book_title)
# 将结果以字典形式返回
result = {
"author_info": author_info.text.strip(), "classic_books": classic_books}
return result
それを実行します:
author = "村上春树"
result = get_author_books_info(author)
print("作者信息:", result["author_info"])
print("经典小说列表:", result["classic_books"])
2.3 タイプ別クロール情報
import requests
from bs4 import BeautifulSoup
def get_book_info(book_type):
"""
获取亚马逊中指定作品类型的经典小说和相关作者信息
:param book_type: str, 作品类型
:return: tuple, 经典小说和相关作者列表
"""
# 构造查询链接
url = f"https://www.amazon.cn/s?k={
book_type}&i=stripbooks&rh=n%3A658390051&page=1&qid=1620160259&ref=sr_pg_1"
# 发送GET请求获取网页内容
response = requests.get(url)
html = response.content
# 解析网页内容,获取经典小说和相关作者信息
soup = BeautifulSoup(html, 'html.parser')
books = soup.select(".s-result-item")
classic_books = []
related_authors = []
for book in books:
book_title = book.select(".a-link-normal")[0].get_text().strip()
book_author = book.select(".a-size-base.a-link-normal")[0].get_text().strip()
if "经典" in book.select(".a-size-base.a-color-secondary")[0].get_text():
classic_books.append(book_title)
related_authors.append(book_author)
# 返回经典小说和相关作者信息
return (classic_books, related_authors)
それを実行します:
# 获取科幻小说类别的经典小说和相关作者信息
book_type = "科幻"
classic_books, related_authors = get_book_info(book_type)
# 输出结果
print("经典小说:")
for book in classic_books:
print(book)
print("\n相关作者:")
for author in related_authors:
print(author)
3 ディスカッション
この部分の要点は、特定のコンテンツに基づいて情報をクロールして返すクローラーを作成することですが、独自のネットワーク条件に応じて、Douban などの Web サイトに置き換えることができます。