爬虫——使用BeautifulSoup+Requests爬取“多媒体数字报纸”报刊名称信息以及可视化[Python]

记大数据可视化课程作业爬取信息的方法!

1.前期准备

  • 爬虫的对象:多媒体数字报纸
  • 对象说明:因为课程作业我需要的是每个省份对应的报刊内容,所以我只是爬取了一些报刊的信息,写入Excel文件,作为可视化对象,如下图所示(大家可以根据需要去爬取想要的数据,代码代码基本只变动soup的find方法即可)
  • 可视化:使用了pyecharts库进行可视化展示数据

在这里插入图片描述
2.爬虫代码

  • 下面上代码!
import requests as rq
import xlwt as xlwt
from bs4 import BeautifulSoup

if __name__ == '__main__':
    url = "http://www.53bk.com/site/"
    r = rq.get(url)
    soup = BeautifulSoup(r.text, 'lxml')
    titles = soup.find_all("a")
    journals = []
    for title in titles:
        print(title)
        journals.append(title.string)
    print(journals[21:])
    filename = 'journalList.csv'
    book = xlwt.Workbook(encoding='uft-8')
    sheet = book.add_sheet('list', cell_overwrite_ok=True)
    sheet.write(0, 0, u'journalList')
    i = 1
    while i < len(journals):
        # journal = journals[i-1]
        sheet.write(i, 0, journals[i - 1])
        i += 1
    book.save(filename)

3.可视化结果与代码
在这里插入图片描述

下面是可视化的代码:

import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Pie as Pie
from pyecharts.globals import ThemeType

#%%

# 省份报刊分布
v = ['北京市','上海市','天津市','重庆市','河北省','山西省','内蒙古自治区','辽宁省','吉林省','黑龙江省','江苏省','浙江省','安徽省','福建省','江西省','山东省','河南省','湖北省','湖南省','广东省','广西壮族自治区','海南省','四川省','贵州省','云南省','西藏自治区','陕西省','甘肃省','青海省','宁夏回族自治区','新疆维吾尔自治区','台湾省','香港特别行政区','澳门特别行政区']
data = [118,32,8,13,30,22,8,23,13,12,47,70,23,28,14,46,47,38,32,50,21,9,43,13,13,7,29,17,7,9,11,8,9,4]   #报刊数量

#%%

c1 = (
    Pie(init_opts=opts.InitOpts(theme=ThemeType.WESTEROS,width='1500px', height='1200px'))
    .add(
        "",
        [list(z) for z in zip(v, data)],
        radius=["30%", "75%"],
        center=["50%", "50%"],
        rosetype="radius",
        label_opts=opts.LabelOpts(is_show=False,position='bottom'),
    )
    # .set_global_opts(legend_opts=opts.LegendOpts(is_show=True,pos_bottom='100%'))
    .set_series_opts(label_opts = opts.LabelOpts(formatter="{b}:{c}"))
    .set_global_opts(title_opts=opts.TitleOpts(title="省份报刊分布\n"),
        legend_opts=opts.LegendOpts(
            pos_bottom = '5%',
        ))
    .render("../pic_html/pie_rosetype.html")
    )

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值