Python学习第四天

练习爬虫爬取网页电影信息

-首先,导入包

import requests
import pandas as pd
from matplotlib import pyplot as plt
#绘图汉字编码
plt.rcParams["font.sans-serif"] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
from lxml import html
movie_list = []

-设置域名

# 目标站点地址
url = 'https://movie.douban.com/cinema/later/chongqing/'

-设置爬取信息时的访问用户信息

headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36"}
resp = requests.get(url, headers=headers)
html_data = resp.text
#提取电影网站的信息
selector = html.fromstring(html_data)
ul_list = selector.xpath('//div[@class="intro"]')
print('一共{}部电影'.format(len(ul_list)))

#电影名

for li in ul_list:
    title = li.xpath('./h3/a/text()')[0]
    print(title)
# 上映日期
    date = li.xpath('./ul/li[1]/text()')[0]
    print(date)
# 类型
    type = li.xpath('./ul/li[2]/text()')[0]
    print(type)
# 上映国家
    country = li.xpath('./ul/li[3]/text()')[0]
    print(country)
# 想看人数
    want = li.xpath('./ul/li[4]/span/text()')[0]
    want = float(want.replace('人想看', ''))
    print('想看人数:{}人'.format(want))


#添加所有的电影信息

    movie_list.append({
        'title':title,
        'date':date,
        'type':type,
        'country':country,
        'want':want
    })

#按时间排序
movie_list.sort(key=lambda x:x['want'])

for movie in movie_list:
    print(movie)
#柱状图
top5_title = [movie_list[i] for i in range(5)]
x = [x['title'] for x in top5_title]
print(x)
y = [x['want'] for x in top5_title]
print(y)
plt.barh(x,y)
plt.show()


#占比图
mov_list = []
counts ={}
for mo in movie_list:
    mov_list.append(mo['country'])
print(mov_list)

for word in mov_list:
    counts[word] = counts.get(word, 0) + 1
items = list(counts.items())
print(items)

li = []
lo = []
for i in range(4):
    co, count = items[i]
    li.append(co)
    lo.append(count)
#explode=0,0,0,0表示四个扇区
explode = [0, 0, 0, 0]
#labels是对标签的定义
#shadow=True表示有一定的“阴影”
plt.pie(lo, explode=explode, shadow=True, labels=li, autopct='%1.1f%%')
plt.legend(loc=2)
plt.axis('equal')
plt.show()

之前列表字典的区别有些没分清楚,再写一下

-列表

1.可以用list()函数或者方括号[]创建,元素之间用逗号’,‘’分隔。
2.列表的元素不需要具有相同的类型
3.使用索引来访问元素
4.可切片

-字典

1.元素由键(key)和值(value)组成
2.可以用dict()函数或者方括号()创建,元素之间用逗号’,‘’分隔,键与值之间用冒号”:”隔开
3.键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组
4.使用键(key)来访问元素

你可能感兴趣的:(Python学习第四天)