利用Python函数解决实际问题的案例
本文将介绍利用Python函数解决实际问题的两个案例,分别是网站性能自动化测试和自动化数据抓取。
案例一:网站性能自动化测试
在互联网时代,网站的性能是很关键的。通过自动化测试,可以更快更准确地评估网站的性能,从而提高网站的质量和用户体验。Python是一种非常优秀的自动化测试工具,这里我们将介绍一个Python函数自动化测试的案例。
首先,需要安装一些Python库。在终端中运行下面的命令:
pip install selenium
pip install beautifulsoup4
其中,selenium库用于模拟用户操作,beautifulsoup4库用于解析HTML网页。
接下来,我们编写一个名为“test_performance”的Python函数,它包含以下步骤:
1. 使用selenium库打开目标网站;
2. 在网站中随机搜索一些关键词,并点击搜索按钮;
3. 记录搜索结果页面的加载时间;
4. 遍历搜索结果并记录每个结果的细节信息(如标题、URL等);
5. 将结果输出到一个CSV文件中。
完整的代码如下:
from selenium import webdriver
from bs4 import BeautifulSoup
import time
import csv
import random
def test_performance():
# 启动浏览器
driver = webdriver.Chrome()
# 打开目标网站
driver.get("https://www.google.com")
# 随机生成搜索关键词
keywords = ["Python", "Machine Learning", "Data Science", "Artificial Intelligence"]
search_string = random.choice(keywords)
# 在搜索框中输入关键词
search_box = driver.find_element_by_name("q")
search_box.send_keys(search_string)
search_box.submit()
# 计时搜索结果页面的加载时间
start_time = time.time()
while "search" in driver.current_url:
time.sleep(1)
if time.time() - start_time > 30:
break
end_time = time.time()
duration = end_time - start_time
# 解析搜索结果页面
soup = BeautifulSoup(driver.page_source, 'html.parser')
results = soup.find_all("div", class_="g")
# 将搜索结果输出到CSV文件
with open("search_results.csv", mode='w', encoding='utf-8', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(["Title", "URL", "Description"])
for result in results:
title_tag = result.find("h3", class_="LC20lb DKV0Md")
if title_tag is not None:
title = title_tag.get_text().strip()
url = result.find("a")["href"]
description_tag = result.find("div", class_="VwiC3b")
if description_tag is not None:
description = description_tag.get_text().strip()
else:
description = ""
writer.writerow([title, url, description])
# 关闭浏览器
driver.quit()
print("搜索关键词:", search_string)
print("搜索结果页面加载时间:", duration, "秒")
通过随机搜索一些关键词并在搜索结果页面中遍历信息,我们可以模拟真实的用户操作,从而测试网站的性能。此外,我们还将搜索结果输出到一个CSV文件中,以便进一步分析和处理。
案例二:自动化数据抓取
在数据分析和机器学习领域,数据来源是非常重要的。有时候,我们需要从网站上抓取大量数据,以便进行深度分析和建模。这时候,Python的自动化数据抓取功能就显得尤为重要。
下面我们将介绍一个Python函数自动化数据抓取的案例。假设我们要从淘宝网上抓取所有女鞋商品的信息,包括商品名称、价格、评价等级、销量、店铺名称和店铺地址等。首先,需要安装一些Python库。在终端中运行下面的命令:
pip install selenium
pip install beautifulsoup4
pip install pandas
其中,selenium库用于模拟用户操作,beautifulsoup4库用于解析HTML网页,pandas库用于将数据存储为DataFrame格式。
接下来,我们编写一个名为“get_data”的Python函数,它包含以下步骤:
1. 使用selenium库打开淘宝网;
2. 在搜索框中输入“女鞋”,并点击搜索按钮;
3. 将滚动条滑动到页面底部,以触发动态加载;
4. 解析网页中的商品信息,并将其存储到一个列表中;
5. 点击“下一页”按钮,重复第4步,直到抓取数量达到指定值;
6. 将数据存储为DataFrame格式,并输出到CSV文件中。
完整的代码如下:
from selenium import webdriver
from bs4 import BeautifulSoup
import time
import pandas as pd
def get_data(num_pages=5):
# 启动浏览器
driver = webdriver.Chrome()
# 打开淘宝网
driver.get("https://www.taobao.com/")
# 在搜索框中输入关键词
search_box = driver.find_element_by_name("q")
search_box.send_keys("女鞋")
search_box.submit()
# 定义一个空列表,用于存储结果
data = []
# 遍历搜索结果页面
for i in range(num_pages):
# 滑动滚动条
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(1)
# 解析搜索结果页面
soup = BeautifulSoup(driver.page_source, 'html.parser')
items = soup.find_all("div", class_="item J_MouserOnverReq ")
# 遍历商品信息
for item in items:
# 获取商品名称
title_tag = item.find("a", class_="img").img["alt"]
title = title_tag
# 获取商品价格
price_tag = item.find("div", class_="price g_price g_price-highlight")
if price_tag is not None:
price = float(price_tag.strong.string)
else:
price = None
# 获取商品评价等级
rate_tag = item.find("div", class_="rating")
if rate_tag is not None:
rate = rate_tag["data-rate"]
else:
rate = None
# 获取商品销量
sold_tag = item.find("div", class_="deal-cnt")
if sold_tag is not None:
sold = int(sold_tag.string.split("人")[0])
else:
sold = None
# 获取店铺名称和店铺地址
shop_tag = item.find("div", class_="shop").a
if shop_tag is not None:
shop_name = shop_tag.string
shop_url = shop_tag["href"]
else:
shop_name = None
shop_url = None
# 存储结果
data.append([title, price, rate, sold, shop_name, shop_url])
# 点击“下一页”按钮
next_button = driver.find_element_by_class_name("J_Ajax")
next_button.click()
time.sleep(1)
# 关闭浏览器
driver.quit()
# 将数据存储为DataFrame格式
df = pd.DataFrame(data, columns=["Title", "Price", "Rate", "Sold", "Shop Name", "Shop URL"])
# 将数据输出到CSV文件
df.to_csv("taobao_data.csv", index=False, encoding="utf-8")
print("已抓取", len(data), "条数据!")
通过遍历搜索结果页面并解析商品信息,我们可以抓取大量数据,并将其存储为DataFrame格式。此外,我们还将数据输出到CSV文件中,以便进一步处理和分析。
以上就是本文介绍的两个Python函数解决实际问题的案例。通过自动化测试
