Pythonを使用してTaobao製品のスマート検索を作成する方法を教えてください!

 

/ 1はじめに/

オンラインショッピングの台頭により、多くの伝統的なショップがオンラインビジネスに変わり、eコマースの出現は私たちの生活を大いに促進してきました。

/ 2プロジェクトの目標/

Pythonプログラムをワンクリックで検索し、目的地に直接移動して、Taobaoの製品リンク、製品名、および製品イメージのリンクをクロールし、各操作をログファイルに記録します。

/ 3プロジェクトの準備/

崇高なテキスト3エディターを使用してプログラムを作成します。プログラムの実行後、最初にメインインターフェイスを確認します。

/ 4プロジェクトの実現/

1.ページ構造を分析し、製品情報をそれぞれのリストに入れます。例として次のショップを取り上げます。

2.旧式のF12は、店舗の商品リンクを探しているので、できるだけ多くの商品を見つけます。店舗のレイアウトから、このセクションでは赤ちゃんがもっと商品を推薦しているようですので、このセクションのすべてのコンテンツを登ります。

3.図のステップ1、2、3は、クロールしたい商品のさまざまな情報です。商品はすべてクラス写真のdtタグに入っているので、抽出する必要があります。

try:


              urllib3.disable_warnings()#urllib3から警告を削除します


              #Web request 


              rep = requests.get(self.e2.get()、verify = False、timeout = 4)#証明書の検証がFALSEに設定され、アクセス遅延


              担当者を設定します.encoding = 'gbk' 


              soup = BeautifulSoup(rep.content、 'html.parser')


              result = soup.find_all( 'dt'、class_ = 'photo')#クラスが写真


のxであるすべてのdt要素を結果として取得


                    tt = x.find_all( 'a')#dt a 


for y in ttの下のすべての子要素を取得します


for x in y:


                               ab = x.find_next_siblings( 'img')#すべての次の兄弟要素img 


for z in ab:


                                     \#製品名と製品画像のリンクをリストaaとbbaaに追加します


                                     。追加(z ['old'])


                                     bb.append( 'https:' + z ['data-ks-lazyload'])


                          cc.append( 'https:' + y ['href'])#リストccに製品リンクを追加します。


ただし、


return return

このようにして、製品リンク、製品名、および製品イメージリンクを簡単に取得し、それらをaa、bb、およびccリストに保存できます。

/ 5インタラクティブでフレンドリーなGUIインターフェイスの作成/

実行結果をより美しくするために、GUIインターフェイスを作成する必要があります。これには、Pythonの組み込みGUIアーティファクトtkinterについて言及する必要があります。

さて、ビジネスに戻りましょう。インタラクティブなインターフェイスを記述して、より美しいクラスとしてカプセル化できます。

クラスページ:


def __init __(self):


self.ti = dt.now()。strftime( "%Y /%m 


/%d%H:%S:%M")self.root = tk.Tk()#ウィンドウを初期化します


self.root.title( 'Taobao get business baby V1.0')


#ウィンドウself.root.geometry( "700x700")

ウィンドウサイズを設定しますself.root.iconbitmap( 'q.ico')


self.root .resizable(width = True、height = True)#ウィンドウが可変か、幅が可変でないか、高さが可変かを設定します。デフォルトはTrueです


         \ ラベル、テキスト、背景色、フォント(色、サイズ)、ラベルの高さを作成し、 Wide 


self.label1 = tk.Label(self.root、text = 'ショップホームページ:'、font =( '宋体'、10)、width = 12、height = 2)


         \ 入力ボックス、ラベルの高さ、フォントサイズを作成色、コンテンツの表示方法


self.e2 = tk.Entry(self.root、width = 30、show = None、font =( 'Arial'、12))#プレーンテキストで表示


self.label2 = tk.Label(self。 root、text = 'Taobao Direct:'、font =( '宋体'、10)、width = 12、height = 2)


self.e1 = tk.Entry(self.root、width = 30、show = None、font =( 'Arial'、12))


         \ 

ボタンコンテンツの幅と高さのボタンバインディングイベントを作成しますself.b1 = tk.Button(self.root、text = 'parse page'、width = 8、height = 1、command = self.parse)


self.b2 = tk。 Button(self.root、text = 'Generate excel'、width = 8、height = 1、command = self.sc)


self.b3 = tk.Button(self.root、text = 'Taobao search'、width = 8、 height = 1、command = self.search)


self.b4 = tk.Button(self.root、text = 'プログラムを閉じる'、width = 8、height = 1、command = self.close)


self.b5 = tk.Button (self.root、text = 'ログの保存'、width = 8、height = 1、command = self.log)


         \ テキストボックスを


作成しますself.te = tk.Text(self.root、height = 40)


self.label1 .place(x = 140、y = 30、anchor = 'nw')


self.label2.place(x = 138、y = 70、anchor = 'nw')


         \ 

すべてのパーツをインターフェイスself.e1に追加します。 place(x = 210、y = 74、anchor = 'nw')


self.e2.place(x = 210、y = 34、アンカー= 'nw')


self.b1.place(x = 160、y = 110、anchor = 'nw')


self.b2.place(x = 240、y = 110、anchor = 'nw')


self.b3.place(x = 320、 y = 110、anchor = 'nw')


self.b4.place(x = 400、y = 110、anchor = 'nw')


self.b5.place(x = 480、y = 110、anchor = 'nw')


self.te.place(x = 40、y = 170、anchor = 'nw')


         \ 

入力ボックスの開始テキストを設定しますself.e1.delete(0、 "end")


self.e1.insert(0、 "入力してください検索する製品 ")


self.root.mainloop()

GUIインターフェースを作成しても、効果図は次のようになります。

/ 6対象ショップのホームページアドレスを入力し、データを生成してExcelにエクスポートし、レコードを記録します/

1. Taobaoショップのホームページアドレスを入力してデータを取得します。クラスにカプセル化するため、プログラムを判断する必要があります。各関数ブラケットに自己を追加する必要があります。コードは次のとおりです。


#Webコンテンツを解析します




def parse(self):

self.res()


if self.e2.get()== '':#入力ボックスの値が空かどうかを判断します


             \ 

値をテキストボックスself.te.insertに挿入します( '挿入'、 '.... URLを入力してください.... \ n')


       elif str(self.e2.get())。find( 'taobao.com')==-1またはaa == ' ':


self.te.insert(' insert '、' ...アドレスが正しくありません... \ n ')


else:


self.te.insert( "insert"、 "ターゲットWebページの解析:%s \ n \ n "%self.e2.get())


self.te.insert(" insert "、" ....解析の開始:.... \ n ")#INSERTインデックスは、挿入カーソル


selfの現在の位置を示します。 te.insert( "insert"、 "\ n \ n")


for x、y、z in zip(aa、bb、cc):データが配置されているリストを組み合わせる


                  result = x + '\ n' + y + '\ n' + z + '\ n \ 


n'self.te。insert( "insert"、result、 "\ n \ n") 


#テキストボックスに挿入self.te.insert( "insert"、 "\ n \ n")#スペースを挿入


self.te.insert( "end"、 "分析が完了しました... \ n")

2.Excelファイルを生成します。コードは次のとおりです。

#結果をexcel 


def sc(self)に保存します


self.te.insert( "insert"、 "...生成を開始します:... \ n")


       av = {'Time':self.ti、 '製品名':aa、 '製品リンク':cc、 '製品画像リンク':bb} 


       \#データフレーム多次元配列を生成


       df = p.DataFrame(av、columns = ['time'、 '製品名'、 '製品Link '、' Product image link ']、index = range(len(aa)))


       df.to_excel(' 22 .xlsx '、sheet_name =' taobao ')


#Generate excel self.te.insert( "end"、 " ...生成が完了しました.... \ N ")

コードの実行後、次の効果が得られます。

3.ログファイルを生成します。コードは次のとおりです。

#ログを保存
def log(self):


       ss = str(self.te.get(0.0、 'end'))。split( '\ n')#テキストボックスのコンテンツ


       をopen( ' 1.txt '、 'w '、encoding =' utf8 ')as f:
                  #yのログ


をrange(len(ss))に

保存rea = str(self.ti)+ ss [y] +' \ 


                  n'f.write(rea)

コードの実行後、次の効果が得られます。

/ 8クイックサーチタオバオ商品ウェブページダイレクトプログラム終了/

ワンクリックでタオバオ製品を検索するには、まずタオバオの検索アドレスを見つけてから、getリクエストを行い、さまざまな値を彼に渡します。一般的な検索には、キーワード検索が含まれます。

ここで最初にTaobaoの検索エントリを見つけます。アドレスは次のとおりです。

https://s.taobao.com/search?q=

次に、ブラウザで参照するため、後で値を渡します。そのため、ページへのアクセスを特に担当するwebbrowserモジュールを使用する必要があり、その使用法はwebbrowser.open(url)です。

したがって、コードは次のとおりです。

#製品を検索
def search(self):


self.te.insert( "insert"、 "....ブラウザを開く:.... \ N")


  wb.open( 'https://s.taobao .com / search?q = '+ self.e1.get())#ブラウザを開く

最後のステップは、プログラムを閉じることです。コードは次のように表示されます。

#プログラムを閉じる
def close(self):


self.te.insert( "insert"、 ".....プログラムを閉じる:.... \ N")


self.root.destroy()#ウィンドウを破棄する

/ 9まとめ/

1.サーバーに負荷がかかる可能性があるため、データを取得しすぎることはお勧めしません。簡単に試してみてください。

2.この記事は、クローラーライブラリを使用してシンプルでインテリジェントなTaobao検索システムを作成するPython Webクローラーに基づいており、ログを生成するために操作できます。

3.このシステムは非常にシンプルに見えますが、実際には初心者のXiaobaiにとって大きな課題です。一部の大物でも簡単に穴に落ちてしまいます。メインページの分析は少し複雑で変更可能であり、多くの異常が発生して閉じ込められます。 。一般的に言って、これはかなり良い実践プロジェクトであり、あなた自身のためのテストです。あなたがそれを気に入ってくれることを願っています。

4.この記事のソースコードが必要な場合は、「ソースコード」キーワードをクリックし て入手してください。良いと思うので、スターを付けるのを忘れないでください。

 

おすすめ

転載: blog.csdn.net/weixin_43881394/article/details/109027001