gopy 发表于 2022-3-29 16:57

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

本帖最后由 gopy 于 2022-3-29 17:05 编辑

目标

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

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

并且保存在excls表格中

需要用到的模块

```
import requests
import pandas
```

调用整个流程

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



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

​                        (网页内容获取)

先尝试获取第一页内容

```python
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>'
```



```python
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>'
```

```python
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函数进行处理

```python
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
```

```python
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


电影评分用tinyMediaManager刮削就有{:301_986:}

萌新与小白 发表于 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

学习了 厉害
页: [1] 2
查看完整版本: 爬取一页网页的电影名和评分,并且放进excle表格中