2016-04-08 10 views
0

私はこのようなWebページをクロールしていますhttp://www.allocine.fr/film/fichefilm-215143/similaire/クローラと「非表示」リンク

映画のリンクごとに取得したいと思います。

<h2 class="meta-title"> 
    <strong> 
     <a class="meta-title-link" href="/film/fichefilm_gen_cfilm=193113.html">Captain America, le soldat de l&#039;hiver</a> 
    </strong> 
</h2> 

しかし、最後の1が少し異なります。彼らはすべて同じように構築されているので、それはすべての映画のために正常に動作

soup = BeautifulSoup(get_HTML_sim_movies(allocine_id), "html.parser") 
    allocine_ids_sim = [] 

    sim_movie_links = soup.find_all("h2") 
    for sim_movie_html in sim_movie_links: 
     fiche_film = sim_movie_html.find('a').get('href').split("/")[2] 

:だから私のような何かをする関数をしました、私は持つのではなく、私のブラウザで要素のタイトルを点検するとき:class="meta-title-link"を、私はclass="xXx meta-title-link"

を持っていると私はそれをクロールするか、リンクが消え、ソースコードを見たときに置き換えです:data-ac="==L2ZpbG0vZmljaGVmaWxtX2dlbl9jZmlsbT0yMjY2NDQuaHRtbA=="

<h2 class="meta-title"> 
    <strong> 
     <span class="meta-title-link" data-ac="==L2ZpbG0vZmljaGVmaWxtX2dlbl9jZmlsbT0yMjY2NDQuaHRtbA==">Avengers Confidential : La Veuve Noire et Le Punisher</span> 
    </strong> 
</h2> 

リンクを取得する方法と、これがなぜ起こっているのか知っていますか?

答えて

1

それはBase64形式である:

data-ac="==L2ZpbG0vZmljaGVmaWxtX2dlbl9jZmlsbT0yMjY2NDQuaHRtbA==" 

ストリップ最初の2つの文字==その後、

import base64 

base64.b64decode("L2ZpbG0vZmljaGVmaWxtX2dlbl9jZmlsbT0yMjY2NDQuaHRtbA==") 

それは/film/fichefilm_gen_cfilm=226644.html

+0

にそれをデコードしますそして、なぜ彼らは物事のこの種を使用していますか? – mel

+0

これはアプリケーションの設計です。ここで私が観察したのは、カスタム属性** data-ac **がそこにアンカー情報を保持していて、ページにこのデータを解析してタグをオンフックするjavascriptをロードする場所です。あなたはブラウザで検査することでそれを見ることができます。 - クローラを混乱させる理由があるかもしれません。 – kakurala

関連する問題