吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3141|回复: 13
收起左侧

[Python 转载] 爬取一页网页的电影名和评分,并且放进excle表格中

[复制链接]
gopy 发表于 2022-3-29 16:57
本帖最后由 gopy 于 2022-3-29 17:05 编辑

目标

url:https://ssr1.scrape.center/

爬取目标网站的电影的名字和评分

并且保存在excls表格中

需要用到的模块

import requests
import pandas

调用整个流程

html_content=gain_html()  #网页内容的获取
name_list=analysis_name(html_content) #获取电影名称
score_list=analysis_score(html_content)#获取电影评分

1.爬取电影名字和评分则需要对网页内容进行获取

​                        (网页内容获取)

先尝试获取第一页内容

def gain_html():
    url='https://ssr1.scrape.center/'
    res=requests.get(url).text
    return res

第一页内容获取到,继续把电影名字和评分进行解析获取

将会利用re正则获取电影名字

对网页分析

 <a data-v-7f856186="" href="/detail/1" class="name">
                <h2 data-v-7f856186="" class="m-b-sm">霸王别姬 - Farewell My Concubine</h2>
              </a>

发现电影名由h2标签包含着

r'class="m-b-sm">(.*?)</h2>'
def analysis_name(content):
    name_list=re.findall(r'class="m-b-sm">(.*?)</h2>',content)
    return name_list

解析完电影名字,继续将电影评分进行解析

<p data-v-7f856186=""
                 class="score m-t-md m-b-n-sm">
                9.5</p>

对网页结构分析,发现评分在一个p标签里面并且在class="score m-t-md m-b-n-sm">类里面,有换行的情况

re规则如下

r'class="score m-t-md m-b-n-sm">\n(.*?)</p>'
def analysis_score(content):
    score_list=re.findall(r'class="score m-t-md m-b-n-sm">\n(.*?)</p>',content)
    return score_list

把评分获取到放到列表中将会发现,列表中的数据会以有空格

数据会以有空格

数据会以有空格

咱们先对这些数据进行处理

利用python内置的strip函数进行处理

def analysis_score(content):
    original_list=re.findall(r'class="score m-t-md m-b-n-sm">\n(.*?)</p>',content)
    score_list=[]
    for score in original_list:
        score_list.append(score.strip())
    return score_list

处理完之后数据如下

处理完之后数据

处理完之后数据

到此一页的电影名字和评分都已经获取到并且已经放进了列表

咱们把一页的电影名和评分放进excle中

咱们需要安装两个库

#pandas库
pip install pandas -i https://pypi.doubanio.com/simple
pip install openpyxl -i https://pypi.doubanio.com/simple
def preservation_to_excel(file_name,score):
    df = db.DataFrame()
    df['电影名'] = file_name
    df['分数'] = score
    df.to_excel('电影.xlsx', index=False)

代码整合

import re
import requests
import pandas as db

def gain_html():
    url='https://ssr1.scrape.center/'

    res=requests.get(url).text
    return res

def analysis_name(content):
    name_list=re.findall(r'class="m-b-sm">(.*?)</h2>',content)
    return name_list

def analysis_score(content):
    original_list=re.findall(r'class="score m-t-md m-b-n-sm">\n(.*?)</p>',content)
    score_list=[]
    for score in original_list:
        score_list.append(score.strip())
    return score_list

def preservation_to_excel(file_name,score):
    df = db.DataFrame()
    df['电影名'] = file_name
    df['分数'] = score
    df.to_excel('电影.xlsx', index=False)

def create_page():
    url_list=[]
    for page in range(1,11):
        url=f'https://ssr1.scrape.center/page/{page}'
        url_list.append(url)
    return url_list

def main():
    html_content=gain_html()
    name_list=analysis_name(html_content)
    score_list=analysis_score(html_content)
    preservation_to_excel(name_list, score_list)

if __name__ == '__main__':
    main()

列表中的数据会以有空格

列表中的数据会以有空格

处理完之后

处理完之后

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

ding2548 发表于 2022-3-29 17:52
QQ图片20220329175042.png
电影评分用tinyMediaManager刮削就有
萌新与小白 发表于 2022-3-29 20:48
Ti28 发表于 2022-3-29 19:03
用的什么编辑器,pycharm还有办法长期使用吗

如果你是说强制登录,那用2021.2.2及以前的版本
litai123 发表于 2022-3-29 19:02
Ti28 发表于 2022-3-29 19:03
用的什么编辑器,pycharm还有办法长期使用吗
dft2010 发表于 2022-3-29 21:21
写的很好,加个注释就更方便新手了,这个更像是自己的总结
LTcorpio 发表于 2022-3-29 21:22
Ti28 发表于 2022-3-29 19:03
用的什么编辑器,pycharm还有办法长期使用吗

用ja-netfilter-all就可以
 楼主| gopy 发表于 2022-3-29 21:42
dft2010 发表于 2022-3-29 21:21
写的很好,加个注释就更方便新手了,这个更像是自己的总结

感谢,一定一定
 楼主| gopy 发表于 2022-3-29 21:44
Ti28 发表于 2022-3-29 19:03
用的什么编辑器,pycharm还有办法长期使用吗

pycharm丫,社区版免费吧
L的追梦人生 发表于 2022-3-29 22:08
学习了 厉害
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 07:36

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表