python爬虫類--映画天国の磁力リンクを登る
7928 ワード
爬虫類:静的Webページ爬虫類
ツール:pycharm,python 3.6、火狐ブラウザ
モジュール:requests(pip install requestsでインストール可能)、re(インストールなし)
Webサイト:http://www.ygdy8.net/html/gndy/dyzz/index.html映画天国
火狐ブラウザを例に
ムービー名をコピーし、Webソースコードで検索して、見つかるかどうかを確認します.ページソースコード、Ctrl+fを表示します.ウェブソースコードでは、コンテンツを検索することができる.これは一般的に静的Webページに属します.検索できません.一般的にはダイナミックなWebページです.動的WebページはF 12を押してnetwork(ネットワーク)で検索する必要があります.
1つの映画をクリックすると、映画の詳細画面に表示されます.下を見るとダウンロードアドレス、磁力チェーンが見えます. これが私たちが取得する磁気チェーンアドレスです.
ホームページをもう一度見てみると、下のページをめくる画面が見えます.私たちは2ページ目をクリックして、ウェブサイトを観察します.
これは最初の3ページのウェブサイトです.ホームページはhttp://www.ygdy8.net/html/gndy/dyzz/index.htmlと、http://www.ygdy8.net/html/gndy/dyzz/list_23_1.html同じです
コードを作成し、まずページをめくる機能を実現し、177ページあり、forループを利用してウェブサイトを製造しています.文字列結合を使用します.を選択します.
177ページのウェブサイトを得ることができます.
まず1ページを分析し、中で磁気リンクを探します.これにより、まず詳細ページに入り、磁気リンクを見つける必要があります.
このページのURLを見てみましょう.
取得したソースコードに文字化けがあることがわかりました.コードフォーマットを指定する必要があります.F 12を押して要素を見て、符号化charset=gb 2312を発見する
コードを指定すると、印刷は文字化けしていません.次に、ウェブソースの情報、すなわち詳細ページを抽出し、ウェブサイトは相対的なウェブサイトであり、完全なウェブサイトではない(「/html/gndy/dyzz/20180808080804/57202.html」)を抽出し、抽出した後、完全なウェブサイトに接続する必要がある.正規表現を使用して抽出します.
正規表現(.*?)欲張りマッチングではありません.括弧を付けるのは抽出して循環して詳しいページの完全なウェブサイトを得るのです
これにより、1ページのすべての映画の詳細ページが得られます.私たちは勝手にxqurlを探して開けて、映画の詳細を見ることができます.次に、詳細ページのソースコードを取得します.ソースコードで正規表現を使用して磁力接続を取得します.
情報が一致しないことを防止するために,配列の境界を越えるためにtryを用いた.
取得リンクをメモ帳に書き込む
#完全コード
コードではtimeモジュールで各ページをスクロールする時間を制御できます.ipが閉鎖されるのを防止します.エージェントipも使用できます
ツール:pycharm,python 3.6、火狐ブラウザ
モジュール:requests(pip install requestsでインストール可能)、re(インストールなし)
Webサイト:http://www.ygdy8.net/html/gndy/dyzz/index.html映画天国
火狐ブラウザを例に
ムービー名をコピーし、Webソースコードで検索して、見つかるかどうかを確認します.ページソースコード、Ctrl+fを表示します.ウェブソースコードでは、コンテンツを検索することができる.これは一般的に静的Webページに属します.検索できません.一般的にはダイナミックなWebページです.動的WebページはF 12を押してnetwork(ネットワーク)で検索する必要があります.
1つの映画をクリックすると、映画の詳細画面に表示されます.下を見るとダウンロードアドレス、磁力チェーンが見えます. これが私たちが取得する磁気チェーンアドレスです.
ホームページをもう一度見てみると、下のページをめくる画面が見えます.私たちは2ページ目をクリックして、ウェブサイトを観察します.
これは最初の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ページを分析し、中で磁気リンクを探します.これにより、まず詳細ページに入り、磁気リンクを見つける必要があります.
このページのURLを見てみましょう.
http://www.ygdy8.net/html/gndy/dyzz/20180804/57202.html
http://www.ygdy8.net/html/gndy/dyzz/list_23_1.html
のページソースコードで、20180804/57202を探して、見つけられるかどうか見てみましょう.はちょうどこのサイトを見つけた.私たちはウェブソースコードでこのリンクを抽出します.詳細ページを入手します.先にアクセスして、ソースコードを取得
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を押して要素を見て、符号化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を探して開けて、映画の詳細を見ることができます.次に、詳細ページのソースコードを取得します.ソースコードで正規表現を使用して磁力接続を取得します.
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も使用できます