编写一个爬虫,爬取淘宝某一类商品的前10页商品信息,包括商品名称、价格、销量和评价数,并将结果保存到CSV文件中
时间: 2024-10-24 21:16:36 浏览: 34
编写一个爬取淘宝商品信息的爬虫,我们需要先确定使用的API或者工具。由于淘宝官方并未开放大规模的数据抓取API,我们通常会借助一些公开的淘宝商品详情页解析库,如`tianmao spider`或者手动解析HTML。这里我将以手动解析为例,给出一个基本的Python脚本,使用`requests`和`beautifulsoup4`库,不过需要注意,真实环境中需要遵守淘宝的robots.txt协议以及可能的使用限制。
首先确保已安装所需的库:
```bash
pip install requests beautifulsoup4 pandas
```
下面是一个简化的示例,爬取商品列表并保存到CSV文件中:
```python
import requests
from bs4 import BeautifulSoup
import csv
import time
def get_html(url):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
return response.text
else:
return None
def parse_item(html):
soup = BeautifulSoup(html, 'html.parser')
items = []
for item in soup.find_all('li', class_='gl-item'): # 假设商品信息在类名为'main'的ul下,每个商品是一个li元素
name = item.find('h3', class_='p-name').text.strip()
price = item.find('span', class_='p-price').text.strip()
sale_num = item.find('em', class_='item-num').text.strip()
rating_num = item.find('i', class_='score-i').find_next_sibling().text.strip() # 假设评分在i元素后的兄弟节点
items.append([name, price, sale_num, rating_num])
return items
def save_to_csv(items, filename):
with open(filename, 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerow(['商品名称', '价格', '销量', '评价数'])
writer.writerows(items)
def main():
base_url = "https://list.tmall.com/search.htm?q={}&s=0&style=all&stock=1&sort=sale-desc&page=" # 需替换为你想要搜索的商品类别
start_page = 1
end_page = 10
for page in range(start_page, end_page + 1):
url = base_url.format('你想搜的商品关键词') + str(page)
html = get_html(url)
if html is not None:
items = parse_item(html)
save_to_csv(items, f'thobao_{page}_items.csv')
time.sleep(2) # 爬虫速度控制,避免过于频繁
else:
print(f"无法获取第{page}页数据,可能已被阻止")
main()
```
注意:这个例子仅作展示,实际上淘宝的商品详情页面结构可能会不断变化,而且真实环境中抓取可能涉及到反爬虫策略,因此在实际操作时需要谨慎处理。
阅读全文