2017-03-20 16 views
1

私はBeautifulSoupの動画ページをrarbg.toから解析しようとしています。 私は映画のタイトルを集めようとしています。トレントページの解析が失敗します

だから、Pythonで私のコードは次のとおりです:

import urllib2 
from bs4 import BeautifulSoup 
url = "https://rarbg.to/torrents.php?category=movies" 

hdr = { 
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11', 
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
    'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3', 
    'Accept-Encoding': 'none', 
    'Accept-Language': 'en-US,en;q=0.8', 
    'Connection': 'keep-alive', 
} 
req = urllib2.Request(url, headers=hdr) 

try: 
    page = urllib2.urlopen(req) 
except urllib2.HTTPError, e: 
    print e.fp.read() 

# Get all the HTML page 
raw_content = page.read() 
# print raw_content #debug 

# Pass the html page to BeautifulSoup 
soup = BeautifulSoup(raw_content) 
print soup #debug 

movie_titles = soup.find_all("tr","lista2") 
print movie_titles 

私が最初にそれを実行すると、それが正しく映画の要素(テーブル行)のリストを印刷。

しかし、私はそれの後に複数回試みたとき、それはこの返します。私はこのPlease wait while we try to verify your browser...<br/>If you are stuck on this page disable your browser addonsが問題に関係している理解できたよう

<html><head> 
</head> 
<body> 
<style type="text/css">a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,p,pre,q,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;outline:0;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:'';content:none}ins{text-decoration:none}del{text-decoration:line-through}table{border-collapse:collapse;border-spacing:0} 
body { 
    background: #000 url("//dyncdn.me/static/20/img/bknd_body.jpg") repeat-x scroll 0 0 !important; 
    font: 400 8pt normal Tahoma,Verdana,Arial,Arial !important; 
} 
.button { 
    background-color: #3860bb; 
    border: none; 
    color: white; 
    padding: 15px 32px; 
    text-align: center; 
    text-decoration: none; 
    display: inline-block; 
    font-size: 16px; 
    cursor: pointer; 
    text-transform: none; 
    overflow: visible; 
} 
.content-rounded { 
    background: #fff none repeat scroll 0 0 !important; 
    border-radius: 3px; 
    color: #000 !important; 
    padding: 20px; 
    width:961px; 
} 
</style><div align="center" style="margin-top:20px;padding-top:20px;color: #000 !important;"> 
<div class="content-rounded" style="color: #000 !important;"> 
<img src="//dyncdn.me/static/20/img/logo_dark_nodomain2_optimized.png"/><br/>Please wait while we try to verify your browser...<br/>If you are stuck on this page disable your browser addons<br/><img src="//dyncdn.me/static/20/img/loading_flat.gif"/> 
</div> 
</div> 
<script> 
var w = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; 
var h = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; 
var days = 7; 
var date = new Date(); 
var name = 'sk'; 
var value_sk = 'iqcdg1oe63'; 
date.setTime(date.getTime()+(days*24*60*60*1000)); 
var expires = ";expires="+date.toGMTString(); 
document.cookie = name+"="+value_sk+expires+"; path=/"; 

if(w < 100 || h < 100) { 
    window.location.href = "/threat_defence.php?defence=nojc&r=54677187"; 
} else { 
    if(!document.domain) { var ref_cookie = ''; } else { var ref_cookie = document.domain; } 
    setTimeout(function(){ 
     window.location.href = "/threat_defence.php?defence=2&sk="+value_sk+"&ref_cookie="+ref_cookie+"&r=74070547"; 
    }, 3000); 
} 
</script> 
</body></html> 
[] 

Process finished with exit code 0 

を。

DDoS攻撃やキャプチャに何らかの予防策がありますか?開発中に1分に1回または2回要求を出しています。

+0

*あなたは、以下の行為をしない、または容易にすることは許されず、また同意するものとします。(7)**ロボット、スパイダー、ウェブクローラー、その他自動装置、またはマニュアルプロセスを使用して、当社のWebページ、トレント、またはその他のコンテンツをコピーすることができます。 https://rarbg.to/useragreement.php –

答えて

1

それはあなたがをフィルター\をブロックしているはずだDDOS保護ではありません。 ここでの問題は、あなたが人間であるかどうかを確認するためにブラウザで他の種類の確認を使用することです(captchaなど)。 ここからわかるように、別のページにリダイレクトされます(人間のブラウザはスクリプトに反して自動実行されます)。

この問題の解決策を探している可能性があります。 はここではいくつかある:

  1. セレンを使用する(インポート時、time.sleep(秒)を使用することができます)各要求の前待機時間を実装 - 「セレンは、ブラウザを自動化します。それでおしまい!その力でやることは、あなた次第です。 - 私のの推奨
  2. プロキシまたは他のアイデンティティスクランブルソリューション。

セレン - それは偽のブラウザ - 2017 - MEです。 これには、EC.presence_of_element_located((By.ID, "myDynamicElement"))http://selenium-python.readthedocs.io/waits.html まで待つような方法があります。したがって、人間の行動を模倣するようにプログラムすることができます。

+1

ありがとうございます。私はセレンを多量に使用していましたが、使用したくありませんでした。私はPOCペットプロジェクトを組み立てています。重大でも有害でもないスクリプトを1日2回、1日に2回だけ実行するので、私はそれが過剰であると思っても、プロキシソリューションを検討します。 –

+0

ええ、私はその気持ちを知っています、私はあまりにもそれが嫌いですが、それは悪いのではなく、スクリプトのように感じることはありません。あなたはボットを作っていない、あなたは人間を作っている。 –

1

私は、これを再現するためにウェブサイトに多くの要請をしなければなりませんでした。私のIPは今ブロックされているように見えます。

カップルの試行後にTOR、またはVPNを使用してIPを変更することを検討してください。

関連する問題