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

为何使用BeautifulSoup查找存在的元素却返回None值?

解决BeautifulSoup查找特定div返回None的问题

针对你遇到的问题,从代码和爬取逻辑上排查几个关键点:

1. 修复代理参数格式错误

你的requests.get调用中,代理参数传递方式不符合requests要求。requests的代理参数需要是字典格式,直接传入字符串会导致请求失效,返回的页面内容不符合预期,自然找不到目标div。

修改方式:

proxies = {
    "http": proxy,
    "https": proxy
}
page = requests.get(url + str(x), proxies=proxies, timeout=10)

2. 检查请求是否成功

每次请求后必须验证响应状态码,确认页面是否正常返回。如果返回404(页面不存在)、403(访问被拒绝)等状态,说明请求未成功,后续解析必然无效。

添加状态码检查:

page = requests.get(url + str(x), proxies=proxies, timeout=10)
if page.status_code != 200:
    print(f"请求失败,状态码:{page.status_code},URL:{url + str(x)}")
    continue

3. 添加请求头模拟浏览器

TapTap这类站点有反爬机制,直接用requests默认请求头会被识别为爬虫,返回的内容可能是空白或反爬页面。添加User-Agent模拟真实浏览器请求:

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
}
page = requests.get(url + str(x), proxies=proxies, headers=headers, timeout=10)

4. 确认目标元素的有效性

  • 手动访问几个目标URL(比如https://www.taptap.cn/app/12332),查看页面源代码,确认tap-image-wrapper app-info-board__img这个类名是否存在,或者元素结构是否有变化。
  • 如果页面是JavaScript动态渲染的(比如图片通过AJAX加载),BeautifulSoup无法解析动态内容,此时需要改用Selenium或Playwright这类工具渲染页面后再解析。

修改后的完整代码示例

import requests
from bs4 import BeautifulSoup
import requests.exceptions

localfile = "C:/Users/XXX/Desktop/TapTap Apps/TapTap Page 1"
url = "https://www.taptap.cn/app/"
username = 'XXXX'
password = 'XXXX'
proxy = f"https://{username}:{password}@someproxysite.com"
proxies = {
    "http": proxy,
    "https": proxy
}
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
}

def webScraper(url, proxies, headers, min, max):
    for x in range(min, max):
        target_url = url + str(x)
        try:
            page = requests.get(target_url, proxies=proxies, headers=headers, timeout=10)
            if page.status_code != 200:
                print(f"请求失败,状态码:{page.status_code},URL:{target_url}")
                continue
            soup = BeautifulSoup(page.content, 'lxml')
            image = soup.find('div', class_="tap-image-wrapper app-info-board__img")
            print(image)
        except requests.exceptions.RequestException as e:
            print(f"请求异常:{e},URL:{target_url}")

webScraper(url, proxies, headers, 12332, 13000)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 14:47:06