python爬虫爬取淘宝商品信息
背景
淘宝是中国最大的网购平台之一,其商品数量多、种类丰富、价格优惠,吸引了大量消费者的关注和购买。然而,若要手动搜索、筛选商品,费时费力且效率低下,幸而Python爬虫技术可实现自动化搜索、爬取并筛选数据,代替人工劳动,提高购买效率。
准备工作
- 安装Python和Pip;
- 安装Selenium、ChromeDriver和BeautifulSoup4;
- 在淘宝登录状态下,使用浏览器console的network功能,找到搜索框对应的url,获取其请求方式、参数和相应结果。
项目步骤
- 导入所需模块
python
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from bs4 import BeautifulSoup
import csv
- 新建ChromeDriver驱动
python
driver = webdriver.Chrome()
- 打开淘宝页面,定位搜索框并输入搜索关键字,敲击Enter
python
driver.get('https://www.taobao.com/')
search_box = driver.find_element_by_name('q')
search_box.send_keys(keyword)
search_box.send_keys(Keys.RETURN)
- 模拟浏览器向下滚动以加载更多数据,停留1秒后继续向下滚动
python
for i in range(scroll_times):
driver.execute_script('window.scrollTo(0, document.body.scrollHeight);')
time.sleep(1)
- 获取页面源代码,利用BeautifulSoup解析页面,提取所需商品信息
python
html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')
items = soup.find_all('div', {'class': 'item J_MouserOnverReq clearfix'})
for item in items:
# 提取商品信息
- 将所需商品信息写入CSV文件
python
with open('taobao.csv', 'w', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerow(['商品名称', '商品价格'])
for item in items:
writer.writerow([name, price])
- 关闭浏览器
python
driver.close()
示例说明
示例一:搜索“手机”并导出CSV文件
# 搜索关键字和滚动次数
keyword = '手机'
scroll_times = 5
# 执行爬虫
driver = webdriver.Chrome()
driver.get('https://www.taobao.com/')
search_box = driver.find_element_by_name('q')
search_box.send_keys(keyword)
search_box.send_keys(Keys.RETURN)
time.sleep(1)
for i in range(scroll_times):
driver.execute_script('window.scrollTo(0, document.body.scrollHeight);')
time.sleep(1)
html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')
# 提取商品信息
items = soup.find_all('div', {'class': 'item J_MouserOnverReq clearfix'})
with open('taobao.csv', 'w', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerow(['商品名称', '商品价格'])
for item in items:
name = item.find('div', {'class': 'row row-2 title'}).text.strip()
price = item.find('strong', {'class': 'price'}).text
writer.writerow([name, price])
driver.close()
示例二:搜索“台式电脑”并导出CSV文件
# 搜索关键字和滚动次数
keyword = '台式电脑'
scroll_times = 10
# 执行爬虫
driver = webdriver.Chrome()
driver.get('https://www.taobao.com/')
search_box = driver.find_element_by_name('q')
search_box.send_keys(keyword)
search_box.send_keys(Keys.RETURN)
time.sleep(1)
for i in range(scroll_times):
driver.execute_script('window.scrollTo(0, document.body.scrollHeight);')
time.sleep(1)
html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')
# 提取商品信息
items = soup.find_all('div', {'class': 'item J_MouserOnverReq clearfix'})
with open('taobao.csv', 'w', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerow(['商品名称', '商品价格'])
for item in items:
name = item.find('div', {'class': 'row row-2 title'}).text.strip()
price = item.find('strong', {'class': 'price'}).text
writer.writerow([name, price])
driver.close()
以上示例中,分别搜索了“手机”和“台式电脑”关键字,设定不同的滚动次数,爬取商品信息并写入CSV文件。如需爬取其他商品,只需修改keyword的值即可。注意,每一次搜索后需要暂停一会儿,等待页面加载完成再继续滚动。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python爬虫爬取淘宝商品信息 - Python技术站