如何使用BeautifulSoup正确进行网页爬取?新手爬取参展商卡片纯信息内容求助
如何使用BeautifulSoup正确进行网页爬取?新手爬取参展商卡片纯信息内容求助
嗨,我完全懂你作为新手刚接触网页爬取的迷茫——好不容易定位到了参展商卡片,结果输出全是一堆HTML标签,根本不是想要的干净信息对吧?别着急,我来一步步帮你把标签里的纯内容提取出来~
首先得夸夸你,你已经完成了最关键的基础步骤:成功请求到页面内容,还精准定位到了所有参展商卡片,这已经很棒了!接下来的核心就是从每个卡片标签里提取纯文本信息,关键就在于用好BeautifulSoup的.text属性,我给你拆解具体操作:
第一步:遍历所有卡片
你用find_all拿到的cards是一个包含所有参展商卡片的列表,我们需要逐个遍历每个卡片,单独处理里面的内容。
第二步:定位具体字段并提取纯文本
每个卡片里的信息(比如参展商名称、联系方式、主营产品)都对应不同的HTML标签,我们可以用find()或者select_one()定位到这些标签,再用.text获取标签内的纯文本,最后用.strip()去掉多余的换行和空格,让内容更整洁。
给你一份可参考的完整代码
from bs4 import BeautifulSoup as bs import requests url = 'https://ihgfdelhifair.in/mis/Exhibitors' page = requests.get(url) # 这里建议用标准的html.parser解析器,兼容性更好 soup = bs(page.text, 'html.parser') # 找到所有参展商卡片 cards = soup.find_all('div', class_="row Exhibitor-Listing-box") # 遍历每个卡片提取信息 for index, card in enumerate(cards, 1): # 提取参展商名称(你需要根据实际页面的标签结构调整,比如看名称在h4还是h3里) exhibitor_name = card.find('h4').text.strip() if card.find('h4') else "未获取到名称" # 提取联系方式(比如电话/邮箱,根据页面实际class调整) contact_info = card.find('div', class_='contact-details').text.strip() if card.find('div', class_='contact-details') else "未获取到联系方式" # 提取主营产品 main_products = card.find('p', class_='product-desc').text.strip() if card.find('p', class_='product-desc') else "未获取到产品信息" # 打印整理后的信息 print(f"=== 参展商 {index} ===") print(f"名称: {exhibitor_name}") print(f"联系方式: {contact_info}") print(f"主营产品: {main_products}\n")
几个关键小技巧
- 用浏览器开发者工具找标签:如果不知道某个信息对应的标签/class,右键页面里的目标内容→检查,就能看到它的HTML结构,还可以右键复制选择器,转换成BeautifulSoup能识别的定位方式。
- 容错处理很重要:用
if ... else判断标签是否存在,避免某个字段找不到时代码直接报错。 .text是核心:只要拿到了目标标签,.text就能帮你把所有HTML标签去掉,只留下纯文字内容。
备注:内容来源于stack exchange,提问作者ViSa




