图像处理小问题

OMG ❗ 快进来看看,我竟然发现了 ❗ ❗ ❗ MyBatis-Plus在写SQL时,like和like concat()的区别【CRUD番外篇】

  返回  

手刃豆瓣top250排行榜

2021/8/21 17:27:01 浏览:

手刃豆瓣top250排行榜

  • 一、概述
  • 二、代码流程
    • 1、页面获取
    • 2、数据获取
    • 3、数据保存
    • 4、主程序
    • 5、结果
  • 四、总结

一、概述

	豆瓣是我挺喜欢的一个网站,因为有时候书荒了,或者想看电影了,我都会去豆瓣瞅
一瞅,有哪些评分高的书籍和电影。当然喜欢它还有另外一个原因,那就是豆瓣可是
新手练习爬虫的必爬网站啊!所以今天的目标也是豆瓣,要爬取的则就是豆瓣电影的
top250。
	功能说明:将电影的序号、电影名、电影链接、评分、评价人数、概况保存下来。

二、代码流程

1、页面获取

# 定义一个函数来获取每次请求到的页面
def get_page(i): # i用来获取多页内容
    url = "https://movie.douban.com/top250?start="
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36 Edg/92.0.902.78"
    }
    # 第一页url:https://movie.douban.com/top250?start=
    # 第一页url:https://movie.douban.com/top250?start=25
    # 分析得知 start=后面的数字对应上一页最后一个电影的序号
    url = url + str(i * 25)
    # 使用requests.get方法获取相应
    res = get(url, headers=headers)
    # res.status_code 获取每次请求的状态码
    # print(res.status_code) # 200表示请求成功
    return res.text # 获取整个页面文本,使用text属性

2、数据获取

# 获取一个页面的所需信息
def get_data(html):
	# 采用xpath的方式解析数据
	# 使用etree.HTML()解析在线网页
    tree = etree.HTML(html)
    # 先找到每个电影的全部信息保存的div
    item = tree.xpath('//div[@class="item"]')
    # data_list 存放电影信息的列表
    global data_list
    for i in item:# 进一步额解析出需要的信息
        data = []
        # 序号
        NO = i.xpath('.//div[@class="pic"]/em/text()')[0]
        data.append(NO)
        # 电影名
        title = i.xpath('.//div[@class="hd"]/a/span[1]/text()')[0]
        data.append(title)
        # 电影详情链接
        href = i.xpath('.//div[@class="hd"]/a/@href')[0]
        data.append(href)
        # 豆瓣评分
        rating_num = i.xpath('.//div[@class="star"]/span[2]/text()')[0]
        data.append(rating_num)
        # 评价人数
        per_num = i.xpath('.//div[@class="star"]/span[4]/text()')[0]
        # 将XXXXXXX人评价变成纯数字的形式
        data.append(per_num[:-3])
        # 概述
        inq = i.xpath('.//span[@class="inq"]/text()')
        #进一步判断,概述部分可能为空。做出相应处理
        if len(inq) != 0:
            inq = inq[0]
            data.append(inq)
        else:
            data.append(" ")
        #将一个电影的序号、电影名、电影链接、评分、评价人数、概况保存到data_list
        data_list.append(data)

3、数据保存

#将信息保存到Excel表格
def savedata(data_list):
#实例化Workbook类,设置编码格式
    book = xlwt.Workbook(encoding="utf-8", style_compression=0)
    #添加一个sheet
    sheet = book.add_sheet("豆瓣电影TOP250", cell_overwrite_ok=True)
    colList = ["序号", "电影名", "电影链接", "评分", "评价人数", "概况"]
    #为表格添加表头
    for i in range(len(colList)):
        sheet.write(0, i, colList[i])
	#将所有信息保存到Excel
    for i in range(len(data_list)):
    	取出一条电影信息
        data = data_list[i]
        for j in range(len(colList)):
        	# 写入每一列信息
            sheet.write(i + 1, j, data[j])
	# 保存文件
    book.save("豆瓣电影TOP250.xls")
    print("文件保存完成")

4、主程序

if __name__ == '__main__':
    data_list = []
    # 爬取10页共250条信息
    for i in range(10):
    	#得到网页
        html = get_page(i)
        #得到数据
        get_data(html)
        print(f"第{i + 1}页爬取完成...")
    #保存数据
    savedata(data_list)

5、结果

在这里插入图片描述
程序到此结束,可以进而在下一步的数据可视化分析

四、总结

1、在整个程序中,终点在于对于每一个信息的xpath寻找,努力寻找出最简单的xpath路径。
2、评论人数竟然是釜山行???
3、评论人数前十星爷的唐伯虎点秋香和功夫
4、该重温肖克申的救赎了~~

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号