Crawler和"隐藏"链接

时间:2016-04-08 09:16:24

标签: python html css web-crawler

我正在抓取这样的网页http://www.allocine.fr/film/fichefilm-215143/similaire/

我想为每部电影检索它的链接。所以我做了一个类似的功能:

    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]

它适用于所有电影,因为它们都以相同的方式构建:

<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>

但最后一个有点不同,当我用浏览器检查元素标题而不是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 个答案:

答案 0 :(得分:1)

它采用base64格式:

data-ac="==L2ZpbG0vZmljaGVmaWxtX2dlbl9jZmlsbT0yMjY2NDQuaHRtbA=="

先删除两个字符==然后

import base64

base64.b64decode("L2ZpbG0vZmljaGVmaWxtX2dlbl9jZmlsbT0yMjY2NDQuaHRtbA==")

它会将其解码为/film/fichefilm_gen_cfilm=226644.html