目标
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()