python爬虫及数据可视化之试手小爬

        在拜读末位大佬的文章后,我厚着脸皮出了这第一篇文章,来记录我这小小的成功时刻,虽然python还是很简单的吗,但好歹也是小爬了个网站。

首先

        先要导入我们所需要的第三放库,一些常用的比如,pandas . re  . matplotlib. BeautifulSoup

requests ,这些在爬虫过程钟基本都会用到,导入的话,我用的是pycharm,比较简单的方法就是

import 你想要的库,另一种就是点开file,就是下图左上角那个

 点开后选择我鼠标点成蓝色的那个Settings

进入后,找到project:pythProject  其中那个Python Interpreter

 点击加号,进行第三方库的导入,在里面输入你想导入的库,由于网路原因,可能会有点慢,要耐心等待

这就是今天我们要用到的几个库,好了准备工作还有最后一项,就是搞个浏览器,我在这里用的chorme,也就是谷歌浏览器,需要下载的伙伴们可以到百度下载

开始

打开我们所要爬取的网页,摁键盘的f12,进入到开发者模式,点击network,同时按下Ctrl+R

 查看网页信息,随便选取一个文件查看,查找我们所需要的信息,来模拟浏览器访问网站

 我们今天要爬取的数据只有两个,一个是果品行情 那句话,还有就是旁边的时间,话不多说,开搞,

        先获取我们想要的网页数据,通过这个函数,顺便写个try except函数来看看我们有没有错

 

然后就要用到BeautiSoup方法来解析页面了,顺便建立一个文本文档来存储我们爬取的数据 

之后就是在浏览器找到我们所需要获取的数据标签位置,是div 下面的ul里面的li  a 标签

 对果品行情进行标签筛选,这筛选的时候确实把我难住了,这是恶补了一下资料

 对发布日期进行筛选

然后将其存入到 excel中,希望你有啊,建立好记得返回数据,不然会报错 

excel 存入样式,这样就成功了

 

然后就到了可视化了,由于数据较少,我就没有弄太多的表,就弄了一个直方图

 

 其中需要我们修改的只有几个数据,xlable,和ylable,其中有个字体管理

my_font = font_manager.FontProperties(fname='f:/data/SourceHanSerifSC-Bold.otf')

这一行的字体需要自行下载导入,其实也可以把这句话删除,我感觉好像没有用

图表运行成果图

 最后附上完整代码

# !/usr/bin/python
import re
import pandas
import requests
from bs4 import BeautifulSoup
import matplotlib.pyplot as plt
from matplotlib import font_manager


def get_html(url):
    try:
        r = requests.get(url)  # 使用get来获取网页数据
        r.raise_for_status()  # 如果返回参数不为200,抛出异常
        r.encoding = r.apparent_encoding  # 获取网页编码方式
        return r.text  # 返回获取的内容
    except:
        return '报错'


def save(html):
    # 解析网页
    soup = BeautifulSoup(html, 'html.parser')  # 指定Beautiful的解析器为“html.parser”

    with open('f:/data/B_dataa.txt', 'r+', encoding='UTF-8') as f:
        f.write(soup.text)


    frute=[] #果品行情
    datay=[] #发布日期
    # ********************************************  果品行情
    for  tag in soup.find_all('div', class_='jg_ar_lrft_ar'):
        for ul in tag.select('ul'):
            for li in ul.select('li'):

                fru =li.a.get_text()


                frute.append(str(fru))
    print(frute)
    # ********************************************  发布日期
    # for ul in soup.find_all(name='ul'):
    #     print(ul.find_all(name='li'))
    # for li in ul.find_all(name='li'):
    #     print(li.string)
    for tag in soup.find_all('div', class_='jg_ar_lrft_ar'):
        for ul in tag.select('ul'):
            for li in ul.select('li'):
                dat = li.span.get_text()
                datay.append(str(dat))
    print(datay)
    # # 存储至excel表格中
    info = {'果品行情': frute, '发布日期': datay}
    dm_file = pandas.DataFrame(info)
    dm_file.to_excel('Dongmana.xls', sheet_name="农业数据")
    # # 将所有列表返回
    return frute, datay



def view(info):
    my_font = font_manager.FontProperties(fname='f:/data/SourceHanSerifSC-Bold.otf')  # 设置中文字体(图标中能显示中文)

    dm_frute = info[0]  # 果品行情
    dm_datay = info[1]  # 发布日期

    # 为了坐标轴上能显示中文
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.rcParams['axes.unicode_minus'] = False
    # **********************************************************************综合评分和播放量对比
    # *******综合评分条形图
    fig, ax1 = plt.subplots()
    plt.bar(dm_frute, dm_datay, color='red')  # 设置柱状图
    plt.title('农业数据分析', fontproperties=my_font)  # 表标题
    ax1.tick_params(labelsize=6)
    plt.xlabel('果品行情')  # 横轴名
    plt.ylabel('发布日期')  # 纵轴名
    plt.xticks(rotation=90, color='green')  # 设置横坐标变量名旋转度数和颜色
    plt.show()



def main():
    url ='http://www.1nongjing.com/gphq/list_127_2.html' # 网址
    html = get_html(url)  # 获取返回值
    # print(html)
    info = save(html)
    view(info)
if __name__ == '__main__':
   main()

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷 黎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值