商业智能、研究和分析仅仅是网络搜索所带来的无限可能性中的一小部分。像沃尔玛这样成熟的商业实体为我们收集必要的信息提供了一个完美的结构。我们可以使用各种刮擦技术,从沃尔玛的众多网站中轻松刮擦名称、价格和评论信息等数据。
在这篇文章中,我们将详细介绍:如何刮取沃尔玛数据。我们将使用 requests 发送 HTTP 请求,使用 lxml 解析返回的 HTML 文档。
在多个零售网站上搜索产品数据时,Python 是最有效的选择之一。下面介绍它如何无缝集成到提取项目中:
在零售业项目中使用这种语言,不仅可以简化技术方面的工作,还可以提高效率,扩大分析范围,使其成为旨在深入了解市场的专家的首选。这些方面在决定搜索沃尔玛数据时可能特别有用。
现在,让我们从构建沃尔玛网络搜刮工具开始。
首先,确保计算机上安装了 Python。可以使用 pip 下载所需的库:
pip install requests
pip install lxml
pip install urllib3
现在,让我们导入这些库:
import requests
from lxml import html
import csv
import random
import urllib3
import ssl
可以像这样添加产品 URL 列表,以刮取沃尔玛数据。
product_urls = [
'link with https',
'link with https',
'link with https'
]
在对沃尔玛进行网络搜刮时,为了模仿真实的浏览器,必须提供正确的 HTTP 标头,尤其是 User-Agent 标头。此外,还可以通过使用旋转代理服务器来规避网站的反僵尸系统。在下面的示例中,将介绍用户代理字符串以及通过 IP 地址添加代理服务器授权的说明。
user_agents = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
]
proxy = [
'<ip>:<port>',
'<ip>:<port>',
'<ip>:<port>',
]
请求标头的设置应能伪装成来自用户浏览器。这将大大有助于沃尔玛数据搜刮。下面是一个示例:
headers = {
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
'accept-language': 'en-IN,en;q=0.9',
'dnt': '1',
'priority': 'u=0, i',
'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Linux"',
'sec-fetch-dest': 'document',
'sec-fetch-mode': 'navigate',
'sec-fetch-site': 'none',
'sec-fetch-user': '?1',
'upgrade-insecure-requests': '1',
}
首要步骤是创建一个可接受产品信息的结构。
product_details = []
枚举 URL 页面的工作方式如下:对于每个 URL 页面,都会使用随机选择的用户代理(User-Agent)和代理发起 GET 请求。在返回 HTML 响应后,对其进行解析,以获取产品详细信息,包括名称、价格和评论。相关详细信息会保存在字典数据结构中,随后会添加到之前创建的列表中。
for url in product_urls:
headers['user-agent'] = random.choice(user_agents)
proxies = {
'http': f'http://{random.choice(proxy)}',
'https': f'http://{random.choice(proxy)}',
}
try:
# 向 URL 发送 HTTP GET 请求
response = requests.get(url=url, headers=headers, proxies=proxies, verify=False)
print(response.status_code)
response.raise_for_status()
except requests.exceptions.RequestException as e:
print(f'Error fetching data: {e}')
# 使用 lxml 解析 HTML 内容
parser = html.fromstring(response.text)
# 提取产品标题
title = ''.join(parser.xpath('//h1[@id="main-title"]/text()'))
# 提取产品价格
price = ''.join(parser.xpath('//span[@itemprop="price"]/text()'))
# 提取审查详情
review_details = ''.join(parser.xpath('//div[@data-testid="reviews-and-ratings"]/div/span[@class="w_iUH7"]/text()'))
# 将提取的详细信息存储在字典中
product_detail = {
'title': title,
'price': price,
'review_details': review_details
}
# 将产品详细信息添加到列表中
product_details.append(product_detail)
标题:
价格:
审查细节:
with open('walmart_products.csv', 'w', newline='') as csvfile:
fieldnames = ['title', 'price', 'review_details']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for product_detail in product_details:
writer.writerow(product_detail)
当 Web scraping Walmart 完成后,Python 的完整脚本将如下所示。这里还有一些注释,便于您理解每个部分。
import requests
from lxml import html
import csv
import random
import urllib3
import ssl
ssl._create_default_https_context = ssl._create_stdlib_context
urllib3.disable_warnings()
# 搜索沃尔玛数据的产品 URL 列表
product_urls = [
'link with https',
'link with https',
'link with https'
]
# 用于匿名的随机用户代理字符串
user_agents = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
]
# IP 轮换代理列表
proxy = [
'<ip>:<port>',
'<ip>:<port>',
'<ip>:<port>',
]
# 模仿浏览器请求的标头
headers = {
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
'accept-language': 'en-IN,en;q=0.9',
'dnt': '1',
'priority': 'u=0, i',
'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Linux"',
'sec-fetch-dest': 'document',
'sec-fetch-mode': 'navigate',
'sec-fetch-site': 'none',
'sec-fetch-user': '?1',
'upgrade-insecure-requests': '1',
}
# 初始化一个空列表,用于存储产品详细信息
product_details = []
# 循环浏览每个产品的 URL
for url in product_urls:
headers['user-agent'] = random.choice(user_agents)
proxies = {
'http': f'http://{random.choice(proxy)}',
'https': f'http://{random.choice(proxy)}',
}
try:
# 向 URL 发送 HTTP GET 请求
response = requests.get(url=url, headers=headers, proxies=proxies, verify=False)
print(response.status_code)
response.raise_for_status()
except requests.exceptions.RequestException as e:
print(f'Error fetching data: {e}')
# 使用 lxml 解析 HTML 内容
parser = html.fromstring(response.text)
# 提取产品标题
title = ''.join(parser.xpath('//h1[@id="main-title"]/text()'))
# 提取产品价格
price = ''.join(parser.xpath('//span[@itemprop="price"]/text()'))
# 提取审查详情
review_details = ''.join(parser.xpath('//div[@data-testid="reviews-and-ratings"]/div/span[@class="w_iUH7"]/text()'))
# 将提取的详细信息存储在字典中
product_detail = {
'title': title,
'price': price,
'review_details': review_details
}
# 将产品详细信息添加到列表中
product_details.append(product_detail)
# 将提取的数据写入 CSV 文件
with open('walmart_products.csv', 'w', newline='') as csvfile:
fieldnames = ['title', 'price', 'review_details']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for product_detail in product_details:
writer.writerow(product_detail)
对于使用 Python 与沃尔玛搜索 API(Walmart scraping API)接口的用户来说,开发能够有效搜索沃尔玛价格和沃尔玛评论结果的强大方法至关重要。该 API 提供了一个直接获取大量产品数据的管道,有助于对价格和客户反馈进行实时分析。
采用这些特定策略可提高信息收集的精确度和范围,使企业能够快速适应市场变化和消费趋势。通过战略性地应用 Python 中的沃尔玛 API,企业可以优化其数据收集流程,确保进行全面的市场分析并做出明智的决策。
在本教程中,我们介绍了如何使用 Python 库抓取沃尔玛数据并将其保存为 CSV 文件,以便日后进行分析。给出的脚本是基本的,可以作为一个起点,您可以对其进行修改,以提高抓取过程的效率。改进措施可能包括在请求之间添加随机时间间隔以模拟人类浏览,使用用户代理和代理掩盖机器人,以及实施高级错误处理以处理刮擦中断或失败。
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
评论: 0