如何从布局混乱的网页爬取全部阿拉巴马州移动房屋公园名称?
解决阿拉巴马州移动房屋公园名称爬取不全的问题
你的问题核心在于只抓取了页面里的第一行表格内容:原代码用soup.select_one("table tr")只会返回匹配到的第一个<tr>元素,自然只能拿到该行里的几个公园名称。要获取全部目标结果,需要遍历页面中所有包含公园名称的表格行。
修正后的代码
import requests from bs4 import BeautifulSoup url = "http://www.chattelmortgage.net/Alabama_mobile_home_parks.html" r = requests.get(url) soup = BeautifulSoup(r.text, "lxml") # 获取页面中所有的表格行 all_table_rows = soup.select("table tr") park_names = [] for row in all_table_rows: # 遍历当前行内所有包含公园名称的<strong>标签 for name_item in row.select("td p strong"): clean_text = name_item.get_text(strip=True) if "alabama" in clean_text.lower(): park_names.append(clean_text) # 输出所有爬取到的公园名称 print('\n'.join(park_names))
关键修改说明
- 把
select_one换成select:soup.select("table tr")会获取页面中所有表格行,而不是仅第一行。 - 双层遍历:先遍历每一行,再从行内提取所有符合条件的
<strong>标签内容,确保不遗漏任何一行的公园名称。 - 结果收集后统一输出:用列表收集所有符合条件的名称,最后一次性打印,避免零散输出。
运行这段代码后,你就能获取到包括Parkway Mobile Home Park - Alabama在内的所有阿拉巴马州移动房屋公园名称了。
内容的提问来源于stack exchange,提问作者SIM
相关产品推荐
相关产品推荐

