python爬取京东商品信息并将信息存入数据库,然后使用pyecharts展示数据源码
时间: 2023-10-25 14:09:00 浏览: 119
好的,以下是一个简单的实现代码,你可以根据自己的需求进行适当的修改和优化:
```python
import requests
from bs4 import BeautifulSoup
import pymysql
from pyecharts import Bar
# 爬取商品信息
def get_goods_info(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:
soup = BeautifulSoup(response.text, 'lxml')
items = soup.select('.gl-item')
for item in items:
try:
goods_id = item.select('.p-img a')[0]['data-sku']
goods_name = item.select('.p-name em')[0].get_text().strip()
goods_price = item.select('.p-price strong')[0].get_text().strip()
goods_comment = item.select('.p-commit strong')[0].get_text().strip()
yield {'id': goods_id, 'name': goods_name, 'price': goods_price, 'comment': goods_comment}
except:
pass
# 将商品信息存入数据库
def save_to_db(goods_info):
conn = pymysql.connect(host='localhost', port=3306, user='root', password='123456', db='test', charset='utf8mb4')
cursor = conn.cursor()
try:
sql = "INSERT INTO goods_info (id, name, price, comment) VALUES (%s, %s, %s, %s)"
cursor.execute(sql, (goods_info['id'], goods_info['name'], goods_info['price'], goods_info['comment']))
conn.commit()
except Exception as e:
print(e)
conn.rollback()
finally:
cursor.close()
conn.close()
# 从数据库中查询商品信息并生成柱状图
def show_data():
conn = pymysql.connect(host='localhost', port=3306, user='root', password='123456', db='test', charset='utf8mb4')
cursor = conn.cursor()
try:
sql = "SELECT name, price FROM goods_info WHERE comment > 1000"
cursor.execute(sql)
results = cursor.fetchall()
goods_name = [result[0] for result in results]
goods_price = [result[1] for result in results]
bar = Bar("京东商品价格分析")
bar.add("商品价格", goods_name, goods_price)
bar.render()
except Exception as e:
print(e)
finally:
cursor.close()
conn.close()
if __name__ == '__main__':
url = 'https://search.jd.com/Search?keyword=Python&enc=utf-8'
for goods_info in get_goods_info(url):
save_to_db(goods_info)
show_data()
```
以上代码的实现流程:
1. 使用 requests 库向京东网站发送 HTTP 请求,获取商品信息页面的 HTML 响应。
2. 使用 BeautifulSoup 库对 HTML 页面进行解析,提取出商品的名称、价格、评论数等信息。
3. 使用 pymysql 库连接 MySQL 数据库,并将商品信息插入到指定的表中。
4. 使用 pyecharts 库生成柱状图,展示商品的名称和价格信息。
需要注意的是,以上代码中的 SQL 语句和数据库连接信息需要根据自己的实际情况进行修改。此外,在实际应用中,还需要考虑反爬虫机制和数据的有效性和安全性。
阅读全文