python爬取数据实例并实现简单可视化
时间: 2025-07-06 13:48:00 浏览: 22
### Python 爬虫 数据抓取 示例
为了展示如何使用Python进行数据抓取并实现基本的数据可视化,下面提供了一个完整的流程示例。此过程涉及使用`scrapy`框架来构建爬虫程序,并利用`pandas`库处理所获取的信息。
#### 构建Scrapy项目结构
首先创建一个新的Scrapy项目用于从特定网站(例如淘宝)收集商品详情:
```bash
$ scrapy startproject taobao_spider
```
定义Item类存储所需字段,在items.py文件内添加如下代码片段:
```python
import scrapy
class Product(scrapy.Item):
title = scrapy.Field()
price = scrapy.Field()
link = scrapy.Field()
```
编写Spider脚本完成页面解析工作,保存至spiders目录下的taobao_spider.py中:
```python
from ..items import Product
import json
import re
import scrapy
class TaobaoSpider(scrapy.Spider):
name = "taobao"
def __init__(self, *args, **kwargs):
super(TaobaoSpider, self).__init__(*args, **kwargs)
def parse(self,response):
goods=response.xpath('//div[@id="mainsrp-itemlist"]//div[@class="items"]').extract()
for good in goods:
item=Product()
try:
item['title'] = ''.join(re.findall(r'title="(.*?)"',good))
item['price']=''.join(re.findall(r'\"view_price\"\:\"(.*?)\"',good))
item['link']="https:"+re.findall(r'<a href=\"//(.*?)\"',good)[0]
yield item
except Exception as e:
print(e)
next_url='https://s.taobao.com/search?q=%E7%BE%8A%E6%AF%9B&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.2&ie=utf8&initiative_id=tbindexz_20170306&bcoffset=4&p4ppushleft=%s,n0&ntoffset=4&s=%d'%(next_page_offset,i*60)
if i<total_pages-1:
yield scrapy.Request(next_url,callback=self.parse)
```
上述代码实现了对指定关键词搜索结果页的商品名称、价格链接等内容提取功能[^2]。
#### 处理与分析采集到的数据
当所有目标网页被成功访问后,可以将得到的结果转换成易于操作的形式——即Pandas中的DataFrame对象以便后续统计计算或绘图需求:
```python
import pandas as pd
def save_to_csv(products,filename):
df=pd.DataFrame(data=[dict(p)for p in products])
df.to_csv(filename,index=False,encoding='utf-8-sig')
```
通过调用该函数可方便地把列表形式的产品记录导出为CSV文档供进一步研究之用[^3]。
#### 利用Pyecharts绘制图表
最后一步就是选取合适的图形展现方式呈现最终成果啦!这里推荐采用pyecharts这个第三方包因为它支持多种类型的交互式图表而且语法简洁明了非常适合初学者上手尝试哦~
安装依赖项:
```bash
pip install pyecharts==1.x.x
```
接着参照官方文档说明快速搭建属于自己的可视化作品吧!
```python
from pyecharts.charts import Bar
from pyecharts import options as opts
from random import randint
bar = (
Bar(init_opts=opts.InitOpts(width="1600px", height="800px"))
.add_xaxis([f"{i}月" for i in range(1, 13)])
.add_yaxis(
series_name="销量",
y_axis=[
randint(100, 200),
...
],
label_opts=opts.LabelOpts(is_show=True),
)
.set_global_opts(title_opts=opts.TitleOpts(title="年度销售趋势"))
)
bar.render('monthly_sales.html')
```
这段代码会生成一个HTML文件,打开它就能看到基于柱状图表示出来的每月销售额变化情况了[^4]。
阅读全文
相关推荐

















