【问题标题】:BS4 : Iterate through page return same result in PythonBS4:遍历页面在 Python 中返回相同的结果
【发布时间】:2021-02-14 05:48:48
【问题描述】:

为什么这段代码返回相同的电影标题(第一页的标题)?

url_base = "https://www.senscritique.com/liste/Le_meilleur_du_meilleur_des_meilleurs/772407#page-"

for page in range(1, 3): #nb_pages+1):
    url_n = url_base + str(page)
    print(url_n)
    html_n = urllib2.urlopen(url_n).read().decode('utf-8')
    soup_n = BeautifulSoup(html_n, 'html.parser')
    for film in soup_n.find_all('li', attrs={"class": u"elli-item"}):
        print(film.find('a', attrs={"class": u"elco-anchor"}).text)

【问题讨论】:

    标签: python beautifulsoup html-parsing


    【解决方案1】:

    页面正在通过 Ajax 从不同的 url 加载标题:

    import requests
    from bs4 import BeautifulSoup
    
    # https://www.senscritique.com/liste/Le_meilleur_du_meilleur_des_meilleurs/772407#page-
    url_base = 'https://www.senscritique.com/sc2/liste/772407/page-{}.ajax'
    
    for page in range(1, 3): #nb_pages+1):
        url_n = url_base.format(page)
        soup_n = BeautifulSoup(requests.get(url_n).content, 'html.parser')
        for film in soup_n.find_all('li', attrs={"class": u"elli-item"}):
            print(film.find('a', attrs={"class": u"elco-anchor"}).text)
    

    打印:

    Old Boy
    Lucy
    Le Loup de Wall Street
    Tomboy
    Dersou Ouzala
    Les Lumières de la ville
    12 hommes en colère
    Gravity
    Hunger Games : La Révolte, partie 1
    Le Parrain
    La Nuit du chasseur
    La Belle et la Bête
    The Big Lebowski
    Interstellar
    Le Ruban blanc
    Vive la France
    La vie est belle
    Le Hobbit : La Bataille des cinq armées
    Pulp Fiction
    Melancholia
    Her
    The Grand Budapest Hotel
    The Tree of Life
    Le Prestige
    Conan le Barbare
    Ninja Turtles
    Jurassic Park III
    Rebelle
    Mud, sur les rives du Mississippi
    Détour mortel
    Only God Forgives
    A Serious Man
    Bienvenue à Gattaca
    Colombiana
    Rome, ville ouverte
    Man of Steel
    Black Book
    La Rafle
    Aliens : Le Retour
    Les Petits Mouchoirs
    Mysterious Skin
    Rashômon
    Lolita
    Le Mystère de la matière noire
    Godzilla
    9 mois ferme
    Pour une poignée de dollars
    Les Enfants du paradis
    Drive
    Fight Club
    Evil Dead
    Le Labyrinthe
    Sous les jupes des filles
    Le Seigneur des Anneaux : La Communauté de l'anneau
    La Chasse
    Le Locataire
    Gone Girl
    La Planète des singes : L'Affrontement
    L'Homme sans âge
    Cinquante nuances de Grey
    

    【讨论】:

      【解决方案2】:

      改成这个。问题部分是python3中的urllib2

      urllib2 模块已在 Python 3 中拆分为多个模块 命名为 urllib.request 和 urllib.error。 2to3 工具将 将源代码转换为 Python 3 时自动调整导入。

      from bs4 import BeautifulSoup
      from urllib.request import urlopen
      
      url_base = "https://www.senscritique.com/liste/Le_meilleur_du_meilleur_des_meilleurs/772407#page-"
      
      for page in range(1, 3): #nb_pages+1):
          url_n = url_base + str(page)
          print(url_n)
          html_n = urlopen(url_n).read().decode('utf-8')
          soup_n = BeautifulSoup(html_n, 'html.parser')
          for film in soup_n.find_all('li', attrs={"class": u"elli-item"}):
              print(film.find('a', attrs={"class": u"elco-anchor"}).text)
      

      输出

      Old Boy
      Lucy
      Le Loup de Wall Street
      Tomboy
      Dersou Ouzala
      Les Lumières de la ville
      12 hommes en colère
      Gravity
      Hunger Games : La Révolte, partie 1
      Le Parrain
      La Nuit du chasseur
      La Belle et la Bête
      The Big Lebowski
      Interstellar
      Le Ruban blanc
      Vive la France
      La vie est belle
      Le Hobbit : La Bataille des cinq armées
      Pulp Fiction
      Melancholia
      Her
      The Grand Budapest Hotel
      The Tree of Life
      Le Prestige
      Conan le Barbare
      Ninja Turtles
      Jurassic Park III
      Rebelle
      Mud, sur les rives du Mississippi
      Détour mortel
      https://www.senscritique.com/liste/Le_meilleur_du_meilleur_des_meilleurs/772407#page-2
      Old Boy
      Lucy
      Le Loup de Wall Street
      Tomboy
      Dersou Ouzala
      Les Lumières de la ville
      12 hommes en colère
      Gravity
      Hunger Games : La Révolte, partie 1
      Le Parrain
      La Nuit du chasseur
      La Belle et la Bête
      The Big Lebowski
      Interstellar
      Le Ruban blanc
      Vive la France
      La vie est belle
      Le Hobbit : La Bataille des cinq armées
      Pulp Fiction
      Melancholia
      Her
      The Grand Budapest Hotel
      The Tree of Life
      Le Prestige
      Conan le Barbare
      Ninja Turtles
      Jurassic Park III
      Rebelle
      Mud, sur les rives du Mississippi
      Détour mortel
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-22
        • 2018-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多