爬虫類といえば、初めてコメント網易クラウド音楽を考えるかもしれません。多くの宝物を所持して網易のクラウド音楽の見直し、ののpythonでそれを宝を掘る方法を一緒に学びましょう!
それは確かに暗号化キーを使用して、宝物であるからです。ヘッダは以下のクロム分析を開きます。
この引数は、かなり複雑に見えます、私たちは、このリンクを呼び出すための要求を持っていません。
今回セレン!ブラウザテスト自動化フレームワークを使用して!これは、ブラウザによって手動操作をシミュレートすることができます!
この目的のために、我々はchromedriverとChromeブラウザを駆動する準備ができなければなりません。
chromedriverはクロームブラウザのダウンロードの対応するバージョンを選択し、淘宝網の画像をダウンロードすることができます。下記ダウンロードしてください。
http://npm.taobao.org/mirrors/chromedriver
プロジェクト全体は、サードパーティのライブラリの数とのpython3を使用しています。以下を参照してください。
from selenium import webdriver
import jieba
from wordcloud import WordCloud
from PIL import Image
import numpy as np
[設定 config.json
{
"id":"1336789644",
"page": 200,
"useCache": true,
"font_path": "SimHei.ttf",
"mask": "mask.png",
"chromedriver": "chromedriver"
}
ランは、sound.py
ワードクラウドを生成します。
すべてのデータとコメント
使用に読み、その後、リンクを解析するために進んで!
網易雲の音楽は、アドレスを見つけ、法律、およびwebdriverを開いての使用を発見しました!
driver = webdriver.Chrome(CONFIG['chromedriver'])
driver.get(f'https://music.163.com/#/song?id={SOUND_ID}')
その後、ドライバはコメント欄にフレームに飛び込んだしましょう。
driver.switch_to.frame('g_iframe')
なぜこれを行いますか?それは、使用のxpathのフレーム構造に解決することはできませんので。そして、ちょうどこのiframe内にコメントデータ。
1件のコメントを選択して、その構造形式を分析し、あなたは同じクラス名の両方を見ることができます。
対応するXPathを書く、すべてのコメントのリストを取得します。
element_list = driver.find_elements_by_xpath('//div[@class="cnt f-brk"]')
フォーマットの構造を分析するための[次へ]ボタンを選択して、あなたはクラス名が接頭辞始まりです見ることができます。
対応するXPathを書く、[次へ]ボタンを取得し、必要なときにクリックをシミュレートします。
next_button = driver.find_element_by_xpath('//a[starts-with(@class,"zbtn znxt js-n-")]')
driver.execute_script('arguments[0].click();', next_button)
データ解析が完了した後、結果は自分自身を生成しました。
コメント一覧保存JSONです。
with open(filePath,'w') as f:
json.dump(comments_list,f, ensure_ascii=False, indent=4)
使用jiebaは、単語をwordcloud、ワードクラウドを生成します。
# 词云处理
image_mask = np.array(Image.open(CONFIG['mask']))
wordlist = jieba.cut(';'.join(comments_list))
wordcloud = WordCloud(font_path=CONFIG['font_path'], background_color='white', mask=image_mask, scale=1.5).generate(' '.join(wordlist))
# 保存图
wordcloud.to_file(f'./result/{SOUND_ID}-{PAGES}.png')
これらは、自分の網易クラウド音楽レビューをクロールセレンを使用して全体の手順です!
この記事では、個人ではなく、他の目的のために、共有することを学ぶためのものです!