You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

网页爬虫仅抓取首行内容问题求助

解决方法:抓取所有影片标题和链接

嗨,我来帮你看看问题出在哪~你的代码能运行但只抓首行,主要有两个小问题:

  1. find_all("div", {"id": "movie_wide"}) 用错了:HTML里id是唯一标识,一个页面只会有一个id="movie_wide"的元素,所以find_all返回的列表里只有这一个div,循环只会跑一次。
  2. 在单个div里只取了第一个p标签:film.find('p')只会找到该div下的第一个<p>,自然只能拿到首条内容。

下面是修改后的代码,能抓取所有影片的标题和链接:

import requests
from bs4 import BeautifulSoup

URL = 'http://www.simplyscripts.com/genre/horror-scripts.html'

def scarica_pagina(url):
    # 发送请求获取页面
    page = requests.get(url)
    # 解析HTML
    soup = BeautifulSoup(page.text, 'lxml')
    
    # 找到包含所有影片的容器(id唯一,用find而不是find_all)
    movies_container = soup.find("div", {"id": "movie_wide"})
    if not movies_container:
        print("未找到影片容器")
        return
    
    # 找到容器里所有包含影片链接的p标签
    movie_paragraphs = movies_container.find_all('p')
    
    # 遍历每个p标签提取信息
    for p in movie_paragraphs:
        # 找到p里的a标签
        link_tag = p.find('a')
        if link_tag:
            # 获取链接和标题
            link = link_tag.get('href')
            title = link_tag.text.strip()
            print(f"标题: {title}")
            print(f"链接: {link}")
            print("---")

# 调用函数
scarica_pagina(URL)

代码解释:

  • 用soup.find("div", {"id": "movie_wide"})精准定位到存放所有影片的容器(因为id唯一,不用找多个)。
  • 用movies_container.find_all('p')拿到容器里所有的影片条目(每个影片都在一个<p>里)。
  • 遍历每个<p>,检查里面是否有<a>标签(避免出错),然后提取链接和标题,最后打印出来。

这样就能抓取页面上所有的影片信息啦~

内容的提问来源于stack exchange,提问作者PdF

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:05:01