编写一个爬虫,爬取淘宝某一类商品的前10页商品信息,包括商品名称、价格、销量和评价数,并将结果保存到CSV文件中。
时间: 2024-11-09 17:18:48 浏览: 17
编写一个爬取淘宝商品信息的Python爬虫,可以使用如BeautifulSoup库来解析HTML,加上requests库获取网页内容。这里我给出一个简单的示例,假设我们使用了Scrapy框架作为基础,因为它的爬虫功能强大且易于管理。首先你需要安装必要的库:
```bash
pip install scrapy requests pandas beautifulsoup4
```
然后创建一个新的Scrapy项目:
```bash
scrapy startproject taobao_crawler
cd taobao_crawler
```
接着,在`taobao_crawler/spiders`目录下创建一个名为`tianmao_spider.py`的文件,编写基本的爬虫代码:
```python
import scrapy
from bs4 import BeautifulSoup
import pandas as pd
class TaobaoSpider(scrapy.Spider):
name = 'tianmao'
allowed_domains = ['taobao.com']
start_urls = ['https://list.taobao.com/search?q={}&page={}'.format('你想抓取的商品类别关键词', 1)]
def parse(self, response):
# 解析HTML提取数据
soup = BeautifulSoup(response.text, 'lxml')
items = []
for item in soup.find_all('li', class_='item'):
try:
title = item.find('h3', class_='title').text.strip()
price = float(item.find('span', class_='price').text.strip().replace('¥', ''))
sales = int(item.find('em', class_='sales_num').text.strip())
rating = int(item.find('i', class_='score-score').get('data-score')) # 假设评分直接显示为数字
items.append({
'标题': title,
'价格': price,
'销量': sales,
'评价数': rating
})
# 如果达到目标页面数则停止
if len(items) >= 10: # 这里假设每页有10条商品
break
except (AttributeError, ValueError):
pass
# 将数据保存到CSV文件
df = pd.DataFrame(items)
df.to_csv('taobao_data.csv', index=False)
# 调用爬虫
if __name__ == '__main__':
from scrapy.crawler import CrawlerProcess
process = CrawlerProcess()
process.crawl(TaobaoSpider)
process.start() # 运行爬虫
```
这个例子中,你需要替换`start_urls`中的商品类别关键词。此外,淘宝的结构可能会经常变化,实际爬取时需要根据当前网站布局调整解析代码。
阅读全文