【问题标题】:Scraping multiple div classes with the same name using Beautiful Soup in Python在 Python 中使用 Beautiful Soup 抓取多个具有相同名称的 div 类
【发布时间】:2020-02-14 20:32:44
【问题描述】:

我已成功抓取网页的图片和标题(代码中的 URL)。我想为此页面上的所有电影执行此操作。 'movie_list' 包含所有这些,但只抓取第一部电影信息。

我尝试将 .find 更改为 .find_all 但这给了我一个错误。

url = 'https://5movies.to/movie/'
content = session.get(url, verify=False).content
soup = BeautifulSoup(content, "html.parser")
movie_list = soup.find_all('div', {'class': 'movie-list'})
all_item = []

for allContainers in movie_list:
    filmName = allContainers.find('img').get('alt')
    filmFoto = allContainers.find('img').get('src')
    filmLink = allContainers.find('a').get('href')
print(filmName)

【问题讨论】:

  • 使用find_all() 而不是find()。和for-loop 从每个元素中获取src。如果您收到错误,请在问题中显示它。始终显示有问题的完整错误消息。
  • 您必须将print() 放入for-loop 以显示所有filmName。或将值filmName 放在某个列表上——即all_item.append(filmName)——然后显示该列表中的所有元素。变量filmName 只能保留一个(最后一个)值。
  • 您能发布一个工作示例以便我们尝试吗?
  • 我尝试将 .find 更改为 .find_all 但这给了我一个错误。请分享整个错误消息,以及 minimal reproducible example

标签: python for-loop web-scraping beautifulsoup


【解决方案1】:

将 print 语句移动到 for 循环内,使其打印出整个列表。 事实上,我将 print 替换为 all_item.append((filmName, filmFoto, filmLink)) 以将其发送到我的前端。

感谢@furas 提供的信息!

url = 'https://5movies.to/movie/'
content = session.get(url, verify=False).content
soup = BeautifulSoup(content, "html.parser")
movie_list = soup.find_all('div', {'class': 'movie-list'})
all_item = []

for allContainers in movie_list:
    filmName = allContainers.find('img').get('alt')
    filmFoto = allContainers.find('img').get('src')
    filmLink = allContainers.find('a').get('href')
    print(filmName)

【讨论】:

    猜你喜欢
    • 2017-10-31
    • 1970-01-01
    • 2018-10-19
    • 2017-03-30
    • 2019-12-23
    • 1970-01-01
    • 2022-01-07
    • 2015-12-10
    • 2016-05-16
    相关资源
    最近更新 更多