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

Web Scraping技术问题:如何遍历多div获取name-plate下的企业名称?

爬取memberleap企业目录的解决方案

问题原因

你的代码返回空列表,核心原因是直接发起的请求缺少必要的请求头,服务器识别为非浏览器访问,返回的页面不含目标内容,导致BeautifulSoup无法定位到name-plate类的元素。


解决方案1:添加请求头模拟浏览器访问

通过给requests.get()添加User-Agent请求头,模拟正常浏览器访问,大概率能获取到完整的页面内容。修改后的代码如下:

import requests
from bs4 import BeautifulSoup

url = 'https://www.memberleap.com/members/directory/search_csam.php'
# 模拟Chrome浏览器的请求头
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, headers=headers)
soup = BeautifulSoup(page.text, 'lxml')

# 提取所有企业板块
name_plates = soup.find_all('div', class_='name-plate')
company_list = []

for plate in name_plates:
    # 提取企业名称和对应链接
    anchor = plate.find('a')
    if anchor:
        company_name = anchor.get_text(strip=True)
        company_href = anchor['href']
        # 提取企业简介(假设简介在板块内的p标签中)
        company_desc = plate.find('p').get_text(strip=True) if plate.find('p') else '无简介'
        company_list.append({
            '企业名称': company_name,
            '详情链接': company_href,
            '企业简介': company_desc
        })

# 打印结果
for company in company_list:
    print(f"【企业名称】{company['企业名称']}\n【详情链接】{company['详情链接']}\n【企业简介】{company['企业简介']}\n---")

解决方案2:处理动态加载内容(如果方案1无效)

如果网站内容是通过JavaScript动态渲染的,仅靠requests无法获取到完整内容,此时需要用selenium模拟浏览器加载页面:

  1. 先安装依赖:
pip install selenium
  1. 下载对应浏览器的驱动(如Chrome的chromedriver,需与浏览器版本匹配),然后运行以下代码:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup
import time

url = 'https://www.memberleap.com/members/directory/search_csam.php'

# 配置Chrome无头模式(后台运行浏览器)
chrome_options = Options()
chrome_options.add_argument('--headless=new')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('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')

# 初始化浏览器驱动
driver = webdriver.Chrome(options=chrome_options)
driver.get(url)
# 等待3秒,确保页面动态内容加载完成(可根据实际情况调整时间)
time.sleep(3)

# 解析渲染后的页面
soup = BeautifulSoup(driver.page_source, 'lxml')
name_plates = soup.find_all('div', class_='name-plate')
company_list = []

for plate in name_plates:
    anchor = plate.find('a')
    if anchor:
        company_name = anchor.get_text(strip=True)
        company_href = anchor['href']
        company_desc = plate.find('p').get_text(strip=True) if plate.find('p') else '无简介'
        company_list.append({
            '企业名称': company_name,
            '详情链接': company_href,
            '企业简介': company_desc
        })

# 关闭浏览器
driver.quit()

# 打印结果
for company in company_list:
    print(f"【企业名称】{company['企业名称']}\n【详情链接】{company['详情链接']}\n【企业简介】{company['企业简介']}\n---")

注意事项

  • 爬取前请查看网站的robots.txt文件,确认允许爬取的内容范围
  • 避免高频次请求,防止触发网站反爬机制导致IP被封禁
  • 如果使用selenium,注意驱动版本需与浏览器版本一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 22:25:41