python爬虫類--映画天国の磁力リンクを登る

7928 ワード

爬虫類:静的Webページ爬虫類
ツール:pycharm,python 3.6、火狐ブラウザ
モジュール:requests(pip install requestsでインストール可能)、re(インストールなし)
Webサイト:http://www.ygdy8.net/html/gndy/dyzz/index.html映画天国
火狐ブラウザを例にpython爬虫——爬取电影天堂磁力链接_第1张图片
ムービー名をコピーし、Webソースコードで検索して、見つかるかどうかを確認します.python爬虫——爬取电影天堂磁力链接_第2张图片ページソースコード、Ctrl+fを表示します.python爬虫——爬取电影天堂磁力链接_第3张图片ウェブソースコードでは、コンテンツを検索することができる.これは一般的に静的Webページに属します.検索できません.一般的にはダイナミックなWebページです.動的WebページはF 12を押してnetwork(ネットワーク)で検索する必要があります.
1つの映画をクリックすると、映画の詳細画面に表示されます.下を見るとダウンロードアドレス、磁力チェーンが見えます.python爬虫——爬取电影天堂磁力链接_第4张图片 python爬虫——爬取电影天堂磁力链接_第5张图片これが私たちが取得する磁気チェーンアドレスです.
ホームページをもう一度見てみると、下のページをめくる画面が見えます.python爬虫——爬取电影天堂磁力链接_第6张图片私たちは2ページ目をクリックして、ウェブサイトを観察します.python爬虫——爬取电影天堂磁力链接_第7张图片
これは最初の3ページのウェブサイトです.ホームページはhttp://www.ygdy8.net/html/gndy/dyzz/index.htmlと、http://www.ygdy8.net/html/gndy/dyzz/list_23_1.html同じです
http://www.ygdy8.net/html/gndy/dyzz/list_23_1.html
http://www.ygdy8.net/html/gndy/dyzz/list_23_2.html
http://www.ygdy8.net/html/gndy/dyzz/list_23_3.html

コードを作成し、まずページをめくる機能を実現し、177ページあり、forループを利用してウェブサイトを製造しています.文字列結合を使用します.を選択します.

for page in range(1,178):
    url='http://www.ygdy8.net/html/gndy/dyzz/list_23_'+str(page)+'.html'
    print(url)

177ページのウェブサイトを得ることができます.
まず1ページを分析し、中で磁気リンクを探します.これにより、まず詳細ページに入り、磁気リンクを見つける必要があります.
python爬虫——爬取电影天堂磁力链接_第8张图片このページのURLを見てみましょう.http://www.ygdy8.net/html/gndy/dyzz/20180804/57202.html http://www.ygdy8.net/html/gndy/dyzz/list_23_1.htmlのページソースコードで、20180804/57202を探して、見つけられるかどうか見てみましょう.python爬虫——爬取电影天堂磁力链接_第9张图片はちょうどこのサイトを見つけた.私たちはウェブソースコードでこのリンクを抽出します.詳細ページを入手します.先にアクセスして、ソースコードを取得

for page in range(1,2):
    url='http://www.ygdy8.net/html/gndy/dyzz/list_23_'+str(page)+'.html'
    print(url)
    html=requests.get(url)
    print(html)
    print(html.text)

取得したソースコードに文字化けがあることがわかりました.コードフォーマットを指定する必要があります.F 12を押して要素python爬虫——爬取电影天堂磁力链接_第10张图片を見て、符号化charset=gb 2312を発見する
for page in range(1,2):
    url='http://www.ygdy8.net/html/gndy/dyzz/list_23_'+str(page)+'.html'
    print(url)
    html=requests.get(url)
    html.encoding="gb2312"
    print(html.text)

コードを指定すると、印刷は文字化けしていません.次に、ウェブソースの情報、すなわち詳細ページを抽出し、ウェブサイトは相対的なウェブサイトであり、完全なウェブサイトではない(「/html/gndy/dyzz/20180808080804/57202.html」)を抽出し、抽出した後、完全なウェブサイトに接続する必要がある.正規表現を使用して抽出します.
data=re.findall('',html.text)#はリストを します
print(data)

正規表現(.*?)欲張りマッチングではありません.括弧を付けるのは抽出して循環して詳しいページの完全なウェブサイトを得るのです
for m in data:
        xqurl = 'http://www.ygdy8.net'+m
        print(xqurl)

これにより、1ページのすべての映画の詳細ページが得られます.私たちは勝手にxqurlを探して開けて、映画の詳細を見ることができます.次に、詳細ページのソースコードを取得します.ソースコードで正規表現を使用して磁力接続を取得します.python爬虫——爬取电影天堂磁力链接_第11张图片
		xqurl = 'http://www.ygdy8.net'+m
        #print(xqurl)

        html2=requests.get(xqurl)
        html2.encoding='gb2312'#    
        #print(html2.text)
        dyLink = re.findall('ftp://.*?',html2.text)[0]
        print(dyLink)



情報が一致しないことを防止するために,配列の境界を越えるためにtryを用いた.
		xqurl = 'http://www.ygdy8.net'+m
        #print(xqurl)

        html2=requests.get(xqurl)
        html2.encoding='gb2312'#    
        #print(html2.text)
        try:
            dyLink = re.findall('ftp://.*?',html2.text)[0]
            print(dyLink)
        except:
            print("      ")

取得リンクをメモ帳に書き込む
with open('    .txt','a') as f:
            f.write(dyLink+'
')

#完全コード
import requests
import re


for page in range(1,178):
    url='http://www.ygdy8.net/html/gndy/dyzz/list_23_'+str(page)+'.html'
    print(url)
    html=requests.get(url)
    html.encoding="gb2312"
    #print(html.text)
    data=re.findall('',html.text)#はリストを します
#print(data)
for m in data:
xqurl = 'http://www.ygdy8.net'+m
#print(xqurl)
html2=requests.get(xqurl)
html2.encoding='gb 2312'#     
#print(html2.text)
try:
dyLink = re.findall('ftp://.*?',html2.text)[0]
            print(dyLink)
        except:
            print("      ")

        with open('    .txt','a',encoding="utf-8") as f:
            f.write(dyLink+'
')

コードではtimeモジュールで各ページをスクロールする時間を制御できます.ipが閉鎖されるのを防止します.エージェントipも使用できます