2017-03-04 4 views
1

基本的に私は個人的な使い方のためにGUIにいくつかの情報を表示するためにWebサイトからソースコードを取得しようとしています。今日までは大丈夫だった。要求は今戻っている:Web Scrapping:完全なソースコードの代わりに単一のスクリプトを返す(Pythonリクエスト)

<script type="text/javascript"> 
//<![CDATA[ 
try{if (!window.CloudFlare) {var CloudFlare=[{verbose:0,p:1488589563,byc:0,owlid:"cf",bag2:1,mirage2:0,oracle:0,paths:{cloudflare:"/cdn-cgi/nexp/dok3v=1613a3a185/"},atok:"bf044f0277d5959921a2a72c3d75c8e3",petok:"a032d4a7f881ace71dd54654ee2fd5265b3404f3-1488641637-1800",zone:"<site link here>",rocket:"a",apps:{}}];document.write('<script type="text/javascript" src="//ajax.cloudflare.com/cdn-cgi/nexp/dok3v=f2befc48d1/cloudflare.min.js"><'+'\/script>');}}catch(e){}; 
//]]> 
</script> 

私が何であるかのCloudFlare読み、そのロケットスクリプト、他のユーザーエージェントを試してみましたが、私はこのウェブを考えていないCloudFlareのアンチDDoS攻撃システム(を扱うライブラリを使用しましたサイトで使用する場合は、「ブラウザの確認(...)」も「キャプチャ」もありません)。私はこれを回避することはできません。 これは私のコードの一部です: はこれを回避する方法はあります...

user_agent = "<an user agent here>" 
header = {'User-Agent':user_agent} 
r = urllib.request.Request("<website url here>",None,header) 
response = urllib.request.urlopen(r) 
data = response.read() 

が、私は情報となどを解析されましたか?私はこのlibraryを使ってみましたが、うまく動作しませんでした。 これはlinkです。私はいくつかの情報を解析しようとしています

答えて

0

Seleniumの仕事のようですね。私はcloudflareのddosによって保護されたウェブサイトでそれを試して、それは働いた:

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

driver = webdriver.Chrome('/path/to/chromedriver') 
driver.get('website-protected-by-cloudflare-ddos') 
try: 
    # wait until certain element with id 'expected-id' showed up 
    element = WebDriverWait(driver, 10).until(
     EC.presence_of_element_located((By.ID, 'expected-id')) 
    ) 
    # do whatever you want with the page 
    print(driver.title) 
finally: 
    driver.quit() 
関連する問題