下面我来详细讲解一下“Python下载商品数据并连接数据库且保存数据”的完整实例教程。
1.准备工作
首先需要安装Python和所需的第三方库,本例中使用BeautifulSoup和pymongo两个库。安装方法可以通过pip包管理工具来完成,具体命令如下:
pip install beautifulsoup4
pip install pymongo
2.爬取数据
在本例中,我们使用一个实际的网站来爬取商品数据。假设我们要爬取的网站是https://www.amazon.cn/。
首先,我们需要获取商品列表页面的HTML内容:
import requests
from bs4 import BeautifulSoup
url = 'https://www.amazon.cn/gp/bestsellers/books/ref=zg_bs_nav_0'
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
接下来,我们需要从HTML中提取商品信息。在本例中,我们将爬取每个商品的名称、价格、评论数和链接。
products = []
for li in soup.find_all('li', attrs={'class': 'zg-item-immersion'}):
product = {
'name': li.find('div', attrs={'aria-hidden': 'true'}).text.strip(),
'price': li.find('span', attrs={'class': 'p13n-sc-price'}).text.strip(),
'review_count': li.find('a', attrs={'class': 'a-link-normal'}).text.strip(),
'url': li.find('a', attrs={'class': 'a-link-normal'})['href'],
}
products.append(product)
完成上述步骤后,我们就获得了一个包含商品信息的列表products。
3.连接数据库
接下来,我们需要连接MongoDB数据库。假设我们连接的数据库名为“testdb”,集合名为“products”。
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client['testdb']
collection = db['products']
4.保存数据
最后,我们将商品信息保存到MongoDB中。
collection.insert_many(products)
这样,我们就完成了商品数据的爬取和保存。下面我们来看两个具体的示例。
示例一:爬取《Python编程:从入门到实践》书籍信息
假设我们要爬取《Python编程:从入门到实践》这本书的商品信息。在Amazon网站上,它的链接为https://www.amazon.cn/dp/B01M18LBI5。
首先,我们需要修改爬取商品列表页面的代码:
url = 'https://www.amazon.cn/dp/B01M18LBI5'
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
然后,我们需要修改从HTML中提取商品信息的代码:
product = {
'name': soup.find('span', attrs={'id': 'productTitle'}).text.strip(),
'price': soup.find('span', attrs={'class': 'a-color-price'}).text.strip(),
'review_count': soup.find('span', attrs={'id': 'acrCustomerReviewText'}).text.strip(),
'url': url,
}
products.append(product)
最后,我们运行完整代码并检查数据库中是否保存了《Python编程:从入门到实践》的商品信息。
示例二:爬取罗技鼠标商品信息
假设我们要爬取罗技G502 HERO Hero鼠标的商品信息。在Amazon网站上,它的链接为https://www.amazon.cn/dp/B07GBZ4Q68。
首先,我们需要修改爬取商品列表页面的代码:
url = 'https://www.amazon.cn/dp/B07GBZ4Q68'
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
然后,我们需要修改从HTML中提取商品信息的代码:
product = {
'name': soup.find('span', attrs={'id': 'productTitle'}).text.strip(),
'price': soup.find('span', attrs={'class': 'a-color-price'}).text.strip(),
'review_count': soup.find('span', attrs={'id': 'acrCustomerReviewText'}).text.strip(),
'url': url,
}
products.append(product)
最后,我们运行完整代码并检查数据库中是否保存了罗技G502 HERO Hero鼠标的商品信息。
总结:
本篇文章通过两个示例,讲解了如何使用Python爬取商品信息并保存到MongoDB数据库中。需要注意的是,在爬取数据的过程中,我们应该遵守网站的爬虫规则,不要对网站造成过大的负担。