xmlyケースは、爬虫類

。1つの !は/ usr / binに/ Pythonの
2  - * -コーディング:UTF-8 - * - 
3。  @time:2020年3月25日午後7時09分
。4  @author:孟
。5  @file:paxmly.py 
。6  @Software:PyCharm 
。7  
。8  インポート要求   クロールするためのアナログ・ブラウザページ情報ページ
。9  インポート parsel パケット解析ページ
10のヘッダー= { 偽装ブラウザリクエストヘッダデータ形式辞書である
11。 ユーザエージェント"Mozilla / 5.0(Windows NTの10.0; Win64の、x64-)のAppleWebKit / 537.36(KHTML、ヤモリ等)クローム/ 80.0.3987.149サファリ/ 537.36 ' 
12である }
 13が応答= requests.get(URL = ' HTTPS://www.ximalaya。 COM / youshengshu / 34013148 / P2 / 'ヘッダ=ヘッダ)クロールページ指定されたプレイリスト
14 SEL = parsel.Selector(response.text)  解析ウェブ
15 sound_list = sel.css(' .soundリストUL-LI "取得30ページはリンク
16 list_all = []  すべての結果の格納されたリストを
17。 のためのサウンド sound_list [午前0時30]: スライス
18は     プリント(サウンド)
19。      MEDIA_URL sound.css =(' Aは:: ATTR(HREF)').extract_first() 削除リンク
20は     印刷(MEDIA_URL)が
21である      MEDIA_URL media_url.split =(' / ') - 1 ]   オーディオID取り除く
22は     印刷(MEDIA_URL)
23である      (MEDIA_NAME sound.css = " :: ATTR(タイトル)").extract_first()  除去名オーディオ
24      #の印刷(MEDIA_NAME)
25      list_all.append((MEDIA_URL 、MEDIA_NAME)) リストへの追加
26 印刷(list_all)
27  取得し、実際の曲カプセル化されたリンクはdefを定義関数
28  デフmedia_api(track_ID):
 29      api_url = F " https://www.ximalaya.com/revision/play/v1/audio?id= }&PTYPE track_ID = {1。' ;
 30      応答= requests.get(api_url、ヘッダー= ヘッダ)
 31れる     プリント(response.json())
32      JSONリターン辞書を用いて抽出[] 
33である      data_json = response.json()
 34は      = SRC data_json [ ' データ' ] [ ' SRC ' ]
 35      リターンSRC
36  #のダウンロードMP4にダウンローダ
37  DEF download_meida(MEDIA_URL、MEDIA_NAME):
 38が      応答= requests.get(MEDIA_URL、ヘッダー= ヘッダ);
 39      を開くと(F ' {} .MP4 MEDIA_NAME '、MODE = ' WB ')AS F:  ダウンロードは、ファイル名としてファイル
40          f.write(response.content)
 41がある のIF  __name__ == ' __main__ ' 42である     ため、URL list_all:
 43は、         印刷(URL [1 ])
 44のIS         = media_api true_url(URL [0])   #1 私たちのオーディオID、一意の識別子の代表的な
45          名のURL = [1 ]
 46である          download_meida(true_url、名前)

 

1  能发送HTTP请求的库
2  インポート要求
 3  インポートparsel
 4つのヘッダー= {
 5  ' のUser-Agent '' のMozilla / 5.0(のWindows NT 6.1、Win64の、のx64)のAppleWebKit / 537.36(ヤモリ様KHTML)クローム/ 77.0 .3865.120サファリ/ 537.36 ' 
6  }
 7  
8  DEF download_meida(MEDIA_URL、MEDIA_NAME):
 9      応答= requests.get(MEDIA_URL、ヘッダー= ヘッダ);
10      オープン(fの' {MEDIA_NAME} .MP4 '、モード= ' WB ')Fとして:
 11          f.write(response.content)
 12  
13  DEF media_api(track_id):
 14      api_url = F ' https://www.ximalaya.com/revision/play/v1/audio?id={track_id}&ptype = 1 ' ;
15      応答= requests.get(api_url、ヘッダー= ヘッダ)
 16      プリント(response.json())
17      JSON返回字典类型提取使用[] 
18      data_json = response.json()
 19      SRC = data_json [ ' データ' ] [ ' SRC ' ]
 20      リターンSRC
21は、 
22であり プリント(media_api(98791745))
23である 
24  DEFの:get_total_page(PAGE_URL)
 25      要求ページ
26が      応答= requests.get(PAGE_URL、ヘッダー= ヘッダ)
 27      #は、取得したコンテンツHTMLページ
28      SEL = parsel.Selector(応答.text)
 29      CSSセレクタによってラベルを見つけるためには、音のリスト、次のLi ULのようにクラス属性をリストに.sound 
30      sound_list = sel.css(.soundリストULのリチウム31      最初の30ページのリンク30の前に傍受される
32      のためのサウンド sound_list [30 ]:
33は、         ()オブジェクトのテキストから抽出されextract_first 
34          取得HREFコンテンツのタグの属性
35          (MEDIA_URL sound.css = ' :: ATTR(HREF)' )(.extract_first)
 36          / youshengshu / 16411402 / 98791745--のみ最後方IDに
37          MEDIA_URL media_url.split =(' / ') - 1 ]
 38であり、         #は、タグのコンテンツのタイトル属性取得
39          MEDIA_NAME sound.css =(' :: ATTR(タイトル)' ).extract_first()
 40          サイクル全体収率リターンの内容と
41は、         降伏MEDIA_NAME、MEDIA_URL
 42は、 
43であります IF  __name__ == __main__ 44である     循環ページがページ範囲の範囲代表的なダウンロードダウンロード
45の     ためのページ(1,3範囲:)
 46である          meidas get_total_page =(F ' https://www.ximalaya.com/yinyue / 23841180 /ページ{P} ' 47          のための media_idこの、MEDIA_NAME meidas:
 48              印刷(MEDIA_URL、MEDIA_NAME)
49              MEDIA_URL = media_api(media_idこの)
 50              プリント(MEDIA_URL)
 51である              download_meida(MEDIA_URL、MEDIA_NAME)

 

おすすめ

転載: www.cnblogs.com/987m/p/12591417.html