Python爬虫批量查询网页数据并导出Excel
要编写一个Python爬虫程序来批量查询网页中 class="product-brand"
的值,并将结果输出为一个Excel表格,你可以使用 requests
库来获取网页内容,使用 BeautifulSoup
来解析HTML,并使用 pandas
来将数据保存为Excel文件。以下是一个示例代码:
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 定义要爬取的网页URL列表
urls = [
'https://example.com/product1',
'https://example.com/product2',
'https://example.com/product3',
# 添加更多URL
]
# 创建一个空列表来存储结果
results = []
# 遍历每个URL
for url in urls:
# 发送HTTP请求获取网页内容
response = requests.get(url)
# 检查请求是否成功
if response.status_code == 200:
# 使用BeautifulSoup解析HTML
soup = BeautifulSoup(response.text, 'html.parser')
# 查找所有class为"product-brand"的元素
product_brands = soup.find_all(class_="product-brand")
# 提取每个元素的文本内容并添加到结果列表
for brand in product_brands:
results.append({'URL': url, 'Product Brand': brand.text.strip()})
else:
print(f"Failed to retrieve {url}")
# 将结果转换为DataFrame
df = pd.DataFrame(results)
# 将DataFrame保存为Excel文件
df.to_excel('product_brands.xlsx', index=False)
print("数据已成功保存到 product_brands.xlsx")
代码说明:
-
requests.get(url): 发送HTTP请求以获取网页内容。
-
BeautifulSoup(response.text, 'html.parser'): 使用BeautifulSoup解析HTML内容。
-
soup.find_all(class_="product-brand"): 查找所有
class="product-brand"
的元素。 -
brand.text.strip(): 提取元素的文本内容并去除前后空白字符。
-
pd.DataFrame(results): 将结果列表转换为Pandas DataFrame。
-
df.to_excel('product_brands.xlsx', index=False): 将DataFrame保存为Excel文件。
依赖库安装:
在运行代码之前,确保你已经安装了所需的Python库。你可以使用以下命令安装它们:
pip install requests beautifulsoup4 pandas openpyxl
注意事项:
-
请确保你有权限爬取目标网站,并遵守网站的
robots.txt
文件和相关法律法规。 -
如果网页内容是动态加载的(例如通过JavaScript),你可能需要使用
Selenium
或其他工具来获取完整的网页内容。
运行此代码后,你将在当前目录下生成一个名为 product_brands.xlsx
的Excel文件,其中包含从指定网页中提取的 product-brand
值。
如果网页内容是动态加载的,将上面的代码修改一下
如果网页内容是动态加载的(即通过 JavaScript 渲染),requests
和 BeautifulSoup
将无法直接获取完整的网页内容。此时,我们需要使用 Selenium
来模拟浏览器行为,加载动态内容后再进行解析。
以下是修改后的代码,使用 Selenium
来处理动态加载的网页内容:
修改后的代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
import pandas as pd
import time
# 设置 Chrome 选项
chrome_options = Options()
chrome_options.add_argument("--headless") # 无头模式,不打开浏览器窗口
chrome_options.add_argument("--disable-gpu") # 禁用 GPU 加速
# 设置 ChromeDriver 路径(需根据你的环境修改)
chrome_driver_path = '/path/to/chromedriver' # 替换为你的 ChromeDriver 路径
# 初始化 WebDriver
service = Service(chrome_driver_path)
driver = webdriver.Chrome(service=service, options=chrome_options)
# 目标网页的URL
url = 'https://example.com' # 替换为你要爬取的网页URL
# 打开网页
driver.get(url)
# 等待页面加载完成(根据需要调整等待时间)
time.sleep(5) # 等待 5 秒,确保动态内容加载完成
# 查找所有 class 属性包含 "product-brand-name" 的元素
brand_elements = driver.find_elements(By.CSS_SELECTOR, '[class*="product-brand-name"]')
# 提取元素的文本内容
brand_names_list = [element.text for element in brand_elements]
# 关闭浏览器
driver.quit()
# 将结果保存到 DataFrame 中
df = pd.DataFrame(brand_names_list, columns=['Brand Name'])
# 导出到 Excel 文件
output_file = 'brand_names.xlsx'
df.to_excel(output_file, index=False)
print(f"数据已导出到 {output_file}")
代码说明:
-
Selenium:
-
使用
Selenium
模拟浏览器行为,加载动态内容。 -
webdriver.Chrome
启动 Chrome 浏览器(无头模式)。 -
driver.find_elements(By.CSS_SELECTOR, '[class*="product-brand-name"]')
查找所有class
属性包含"product-brand-name"
的元素。
-
-
等待页面加载:
-
使用
time.sleep(5)
等待页面加载完成。你可以根据网页的加载速度调整等待时间。 -
如果需要更精确的等待,可以使用
WebDriverWait
(见下文)。
-
-
提取数据:
-
使用
element.text
提取元素的文本内容。
-
-
导出到 Excel:
-
使用
pandas
将数据保存到 Excel 文件中。
-
使用 WebDriverWait
精确等待:
如果需要更精确地等待某个元素加载完成,可以使用 WebDriverWait
。以下是修改后的等待部分代码:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 等待某个特定元素加载完成
try:
WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CSS_SELECTOR, '[class*="product-brand-name"]'))
)
except Exception as e:
print("元素加载超时:", e)
依赖库安装:
在运行代码之前,确保你已经安装了所需的库:
pip install selenium pandas openpyxl
同时,你需要下载与你的 Chrome 浏览器版本匹配的 ChromeDriver
,并将其路径替换到代码中的 chrome_driver_path
。
运行结果:
运行代码后,你会在当前目录下生成一个名为 brand_names.xlsx
的 Excel 文件,其中包含提取的品牌名称。
如果你有任何问题或需要进一步的帮助,请告诉我!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具