作业作业作业

写一个网络爬虫程序,爬取目标网站数据,关键项不能少于5项

在 上述条件下实现存储数据到数据库,可以进行增删改查操作import requests

import re

 

import xlwt

from bs4 import BeautifulSoup

 

url="https://www.dygod.net/html/gndy/dyzz/"

# url1="https://www.dygod.net/html/gndy/dyzz/index_2.html"

 

hd = {

 # 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'

 'User-Agent': 'Mozilla/4.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'

}

def getmanget(linkurl):

    res=requests.get(linkurl,headers=hd)

    res.encoding=res.apparent_encoding

    soup=BeautifulSoup(res.text,"html.parser")

    ret=soup.find_all("a")

    for n in ret:

        if "magnet" in str(n.string):

            # print(n.string)

            return n.string

    return None

 

def insertDB():

    pass

 

def saveExcel(worksheet,count,lst):

    for i in range(6):

        worksheet.write(count,i,lst[i])

 

 

# 正式代码开始

count=0#记录爬取电影的数量

total=[]#用来储存记录信息的列表

workbook=xlwt.Workbook(encoding="utf-8")#创建wookbook对象

worksheet=workbook.add_sheet('sheet1')#创建工作表

 

for i in range(2,3):

    url="https://www.dygod.net/html/gndy/dyzz/index_"+str(i)+".html"

    # print(url)

    res=requests.get(url,headers=hd)

    res.encoding=res.apparent_encoding

    # print(res.text)

 

    soup=BeautifulSoup(res.text,"html.parser")

    print(soup.title,type(soup.title))

    ret=soup.find_all(class_="tbspan",style="margin-top:6px")

 

    for x in ret:

        info=[]

        # print(x.find("a").string)

        info.append(x.find("a").string)

 

        pat=re.compile(r"◎译  名(.*)\n")

        ret=re.findall(pat,str(x))

        for n in ret:

         n=n.replace(u'\u3000',u'')

         print("◎译  名:",n)

         info.append(str(n))

 

         pat = re.compile(r"◎年  代(.*)\n")

         ret = re.findall(pat, str(x))

         for n in ret:

             n = n.replace(u'\u3000', u'')

             print("◎年  代:", n)

             info.append(str(n))

 

 

         pat = re.compile(r"◎产  地(.*)\n")

         ret = re.findall(pat, str(x))

         for n in ret:

             n = n.replace(u'\u3000', u'')

             print("◎产  地:", n)

             info.append(str(n).split("/")[0])

 

         pat = re.compile(r"◎类  别(.*)\n")

         ret = re.findall(pat, str(x))

         for n in ret:

             n = n.replace(u'\u3000', u'')

             print("◎类  别:", n)

             info.append(str(n).split("/")[0])

 

 

         linkurl="https://www.dygod.net/" + x.find("a").get("href")

         manget=getmanget(linkurl)

         if manget:

             print("下载地址:",manget)

             info.append(str(manget))

 

         # print(count,info)

         saveExcel(worksheet,count,info)

         count += 1

         print("="*100)

 

workbook.save("movie.xls")

print(count)

运行结果为

bdcbf06242ff46adb3e1e3048bb2d16d.png

08994cacaeb6441cbaf211444fc8b019.png 

 最后实现扩展:将库中数据进行可视化展示。

代码如下:

import matplotlib.pyplot as plt

import numpy as np

 

#线图

# figure

figure=plt.figure()

subplot=figure.add_subplot(2,2,1)

subplot.plot(np.arange(0,100),np.arange(1,101))

 

# 柱状图

subplot2=figure.add_subplot(2,2,2)#画布2*2中第二个右上角的位置

data=np.array(((1,'变形金刚','动作片','美国','中英双字','2023',9.0),

               (2,'28周后','科幻片','英国','蓝光中英双字','2007',9.0),

               (3,'红尘1945','电影','中国大陆','中英双字','2023',7.0),

               (4,'鼠来宝4','喜剧片','美国','蓝光中英双字','2015',7.0),

               (5,'小行星都市','喜剧片','美国','中英双字','2023',9.0),

               (6,'漫游在蓝色草原','剧情片','中国大陆','国语中字','2022',4.0),

               (7,'花鼠明星俱乐部3','喜剧片','美国','蓝光中英双字','2011',6.0),

               (8,'猎首密令','动作片','韩国','中英双字','2022',8.0),

               (9,'鼠来宝2','喜剧片','美国','韩语中字','2009',9.0),

               (10,'犯罪都市2','动作片','韩国','韩语中字','2023',9.0),

               (11,'花鼠明星俱乐部','喜剧片','美国','中英双字','2007',7.0),

               (12,'魔幻王国:黎明行者号','奇幻片','美国','中英双字','2010',8.0),

               (13,'魔幻王国:卡斯柏王子','奇幻片','美国','中英双字','2008',9.0),

               (14,'铃芽的门锁','电影','日本','日语中字','2022',9.0),

               (15,'魔幻王国:狮子','奇幻片','英国','中英双字','2005',6.0),

               (16,'星际异攻队2','动作片','美国','蓝光中英双字','2017',4.0),

               (17,'银河守护队(港)','科幻片','美国','中英双字','2014',5.0),

               (18,'小屁孩日记','喜剧片','美国','中英双字','2017',6.0),

               (19,'逊咖冒险王3','喜剧片','美国','中英双字','2012',9.0),

               (20,'小孱头日记2','电影','美国','中英双字','2011',9.0),

               (21,'逊咖冒险王','喜剧片','中国大陆','中英双字','2010',9.0),

               (22,'秘密交通站','动作片','美国','中英双字','2023',7.0),

               (23,'年少有为','动作片','中国大陆','中英双字','2010',8.0),

               (24,'圣斗士星矢','科幻片','美国','中英双字','2023',9.0)))

data1=data.T

print(data1)

 

xlabel=data[2]

print(data)

 

#统计剧情片

new1=(data=="剧情片")

juqingpian=np.sum(new1)

 

#统计科幻片

new2=(data=="科幻片")

kehuanpian=np.sum(new2)

 

#统计奇幻片

new3=(data=="奇幻片")

qihuanpian=np.sum(new3)

#统计动作片

new4=(data=="动作片")

dongzuopian=np.sum(new4)

 

#统计喜剧片

new5=(data=="喜剧片")

xijupian=np.sum(new5)

 

#统计'电影'

new6=(data=="电影")

dianying=np.sum(new6)

 

xlist=["剧情片","科幻片","喜剧片","电影","奇幻片","动作片"]

ylist=[juqingpian,kehuanpian,xijupian,dianying,qihuanpian,dongzuopian]

 

x=[i for i in np.array(xlist)]

y=[i for i in np.array(ylist)]

# y=data1[0]

print(x)

print(y)

 

bars=subplot2.bar(x,y,width=0.3)

# subplot2=figure.add_subplot(2,2,2).subplot()

subplot2.set_ylabel('total-number')

subplot2.set_ylabel('type',bbox=dict(facecolor='y',edgecolor='green',alpha=0.65))

 

subplot2.set_xticks(x)

subplot2.set_xticklabels(x)

 

# subplot2.title('Type-Film')

subplot2.grid(linestyle='--')

 

# 设置颜色

i=0

for bar in bars:

    bar.set_color('#'+str(205001+i))

    i+=119500

for x,y in zip(x,y):

    subplot2.text(x,y,'%s'% np.float64(y),ha="center",va="bottom")

 

# 3.饼图

# 用来正常显示中文

plt.rcParams['font.sans-serif']=['SimHei']

# 用来正常显示符号

plt.rcParams['axes.unicode_minus']=False

subplot3=figure.add_subplot(2,2,3)

 

x=[i for i in np.array(xlist)]

y=[i for i in np.array(ylist)]

 

data=[temp for temp in (np.array(y)/np.sum(np.array(y)))]

print(data,'666')

labels=['%.2f %%' % (x*100) for x in data]

 

subplot3.pie(data,colors=['#50F4FF','#14FF4C',

                        '#FF120C','#DC460C',

                          '#2365E1','#FFFF5A'],labels=labels)

 

plt.title('占比类型',bbox=dict(facecolor='y',edgecolor='green',alpha=0.65))

 

#点图

subplot4=figure.add_subplot(2,2,4)

x=np.random.randint(1,100,100)

y=np.random.randint(1,100,100)

 

subplot4.scatter(x,y,s=30,c=x,alpha=0.8,marker='.')

 

plt.show()

运行结果如下

59aef71a48f64d9ab428f95a4e030567.png

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值