爬取猫眼电影TOP100的电影信息(含图片、评分等)

  • 让我们直接进入正题
    • 1.导入需要的库
    • 2.获取页面
    • 3.分析页面
    • 4.保存文件
    • 全部代码

让我们直接进入正题

对猫眼电影的网站进行分析

其链接为:https://maoyan.com/board/4?

1.导入需要的库

本次爬取任务主要依赖于python的requests、beautifulsoup等相关库,如果没有,可以使用pip命令安装

import requests
import re
import time
from bs4 import BeautifulSoup
import pandas as pd

2.获取页面

使用requests的get方法拿到相关的html内容:


def get_page(url,headers):html=requests.get(url,headers=headers)if html.status_code==200:html.encoding=html.apparent_encodingreturn html.textelse:return None

定义函数,url表示目标链接,header表示请求头,如果没有请求头,可能会请求失败,可以在自己的浏览器中查看自己浏览器的headers。 以谷歌Chrome浏览器为例,右键点击‘检查’,选择右上角的Network选项,找到All选项并刷新页面,即可得到自己的headers


3.分析页面

先用bs解析页面,再使用re库正则匹配需要的内容

def get_data():#创建空列表存贮相关的内容name_box,link_box,actor_box,time_box,score_box=[],[],[],[],[]for i in range(10):#设定初始urlurl_score='https://maoyan.com/board/4?'#设定headers,url和headers两个参数用于调用上面的get_page()headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.87 Safari/537.36',}#观察目标链接,设定每个单独页的urlurl=url_score+'offset='+str(i*10)#调用get_page()html=get_page(url,headers)#使用bs解析html的内容bs=BeautifulSoup(html,'html.parser')#其中图片链接被放在‘image-link’的标签里,电影名称被放在‘name’的标签里pic=bs.find_all(class_='image-link')name=bs.find_all(class_='name')#正则表达式匹配movies=re.compile('data-src="(.*?)"/>')pic_links=re.findall(movies,str(pic))for link in pic_links:link=str(link)link_box.append(link)name_list=re.findall('href="/films/.*?">(.*?)</a></p>',str(name))for name in name_list:name_box.append(name)actor=bs.find_all(class_='star')actors_list=re.sub('/n','',str(actor))actors_list=re.findall('<p class="star"[\s\S](.*?)</p>',str(actor),re.S)for actor in actors_list:re.sub('[\n]', '', actor)actor_box.append(actor)releasetime=bs.find_all(class_='releasetime')time_list=re.findall('class="releasetime">(.*?)</p>',str(releasetime))for times in time_list:time_box.append(time)score=bs.find_all(class_='score')integers=re.findall('<i class="integer">(.*?)</i>',str(score))fractions=re.findall('<i class="fraction">(.*?)</i>',str(score))for j in range(len(integers)):score=str(integers[j])+str(fractions[j])score_box.append(score)print('第{}页爬取成功'.format(i+1))print('{}/10'.format(i+1))#设置访问间隔,防止短时间多次访问导致出现验证的情况time.sleep(1)print('------------')#返回列表里的内容return name_box,link_box,actor_box,time_box,score_box

4.保存文件

def main():#调用get_data(),返回几个列表name_box,link_box,actor_box,time_box,score_box=get_data()#利用pandas中的to_csv方法存放数据,也可以用to_excel方法datas=pd.DataFrame({'电影':name_box,'链接':link_box,'演员':actor_box,'评分':score_box})try:#设置本地保存路径datas.to_csv('机器学习\爬虫\maoyan_TOP100.csv',encoding='utf_8_sig')print('保存成功')except:print('保存失败')try:for link in link_box:s=requests.get(link).content#电影封面图片爬取with open('机器学习\爬虫\pic\img{:s}.jpg'.format(str(time.time())),'wb') as f:f.write(s)print('爬取图片成功')except:print("爬取失败")

全部代码

import requests
import re
import time
from bs4 import BeautifulSoup
import pandas as pd#定义函数,url表示目标链接,header表示请求头
def get_page(url,headers):html=requests.get(url,headers=headers)if html.status_code==200:html.encoding=html.apparent_encodingreturn html.textelse:return Nonedef get_data():#创建空列表存贮相关的内容name_box,link_box,actor_box,time_box,score_box=[],[],[],[],[]for i in range(10):#设定初始urlurl_score='https://maoyan.com/board/4?'#设定headers,url和headers两个参数用于调用上面的get_page()headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.87 Safari/537.36',}#观察目标链接,设定每个单独页的urlurl=url_score+'offset='+str(i*10)#调用get_page()html=get_page(url,headers)#使用bs解析html的内容bs=BeautifulSoup(html,'html.parser')#其中图片链接被放在‘image-link’的标签里,电影名称被放在‘name’的标签里pic=bs.find_all(class_='image-link')name=bs.find_all(class_='name')#正则表达式匹配movies=re.compile('data-src="(.*?)"/>')pic_links=re.findall(movies,str(pic))for link in pic_links:link=str(link)link_box.append(link)name_list=re.findall('href="/films/.*?">(.*?)</a></p>',str(name))for name in name_list:name_box.append(name)actor=bs.find_all(class_='star')actors_list=re.sub('/n','',str(actor))actors_list=re.findall('<p class="star"[\s\S](.*?)</p>',str(actor),re.S)for actor in actors_list:re.sub('[\n]', '', actor)actor_box.append(actor)releasetime=bs.find_all(class_='releasetime')time_list=re.findall('class="releasetime">(.*?)</p>',str(releasetime))for times in time_list:time_box.append(time)score=bs.find_all(class_='score')integers=re.findall('<i class="integer">(.*?)</i>',str(score))fractions=re.findall('<i class="fraction">(.*?)</i>',str(score))for j in range(len(integers)):score=str(integers[j])+str(fractions[j])score_box.append(score)print('第{}页爬取成功'.format(i+1))print('{}/10'.format(i+1))#设置访问间隔,防止短时间多次访问导致出现验证的情况time.sleep(1)print('------------')#返回列表里的内容return name_box,link_box,actor_box,time_box,score_boxdef main():#调用get_data(),返回几个列表name_box,link_box,actor_box,time_box,score_box=get_data()#利用pandas中的to_csv方法存放数据,也可以用to_excel方法datas=pd.DataFrame({'电影':name_box,'链接':link_box,'演员':actor_box,'评分':score_box})try:#设置本地保存路径datas.to_csv('机器学习\爬虫\maoyan_TOP100.csv',encoding='utf_8_sig')print('保存成功')except:print('保存失败')try:for link in link_box:s=requests.get(link).content#电影封面图片爬取with open('机器学习\爬虫\pic\img{:s}.jpg'.format(str(time.time())),'wb') as f:f.write(s)print('爬取图片成功')except:print("爬取失败")if __name__ == "__main__":main()

第一次在CSDN上写东西,如有错误,请多多指正!

(爬取猫眼电影TOP100的电影信息(含图片、评分等))相关推荐

  1. python实战(一)Python爬取猫眼评分排行前100电影及简单数据分析可视化python实战(一)Python爬取猫眼排行前一百电影及简单数据分析可视化

    python实战(一)Python爬取猫眼排行前一百电影及简单数据分析可视化 一.抓取数据 需要的库 request库 响应http请求 json库 将文本保存成json形式 pyquery 类似JQ ...

  2. python爬取猫眼正在热映电影

    用python写爬虫爬取需要的数据比较容易,以Python简洁的语法和一大波成熟的库,写起来相当的快 python的版本以及使用的库 Python 3.6.4 requests lxml 这次主要是爬 ...

  3. python爬虫阶段性总结和项目实操——爬取猫眼票房Top100

    本博客通过爬取猫眼票房Top100来简要复习一下网页的HTML获取(requests库)解析(Beautiful Soup库)和数据保存(csv库)以及总结一下爬取过程中遇到的问题和解决方法 运行结果 ...

  4. python实战 scrapy爬取猫眼正在热映电影

    一.目标: 爬取猫眼网站上正在热映的电影及评分情况,保存到mongo的数据库中: 二.具体工作: (1)新建工程: scrapy startproject maoyan cd spider scrap ...

  5. python爬取电影评分_用Python爬取猫眼上的top100评分电影

    代码如下: # 注意encoding = 'utf-8'和ensure_ascii = False,不写的话不能输出汉字 import requests from requests.exception ...

  6. python实战(一)Python爬取猫眼评分排行前100电影及简单数据分析可视化

    python实战(一)Python爬取猫眼排行前一百电影及简单数据分析可视化 一.抓取数据 需要的库 request库 响应http请求 json库 将文本保存成json形式 pyquery 类似JQ ...

  7. Crawler:基于requests库+json库+40行代码实现爬取猫眼榜单TOP100榜电影名称主要信息

    Crawler:基于requests库+json库+40行代码实现爬取猫眼榜单TOP100榜电影名称主要信息 目录 输出结果 实现代码 输出结果 实现代码 # -*- coding: utf-8 -* ...

  8. 利用正则表达式爬取猫眼电影TOP100信息

    本文利用requests库和正则表达式爬取了猫眼电影TOP100电影信息,并将电影封面和标题.主演等文字信息保存在了本地.本文完整代码链接:https://github.com/iapcoder/Ma ...

  9. 猫眼html源码,50 行代码教你爬取猫眼电影 TOP100 榜所有信息

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 今天,手把手教你入门 Python 爬虫,爬取猫眼电影 TOP100 榜信息. 作者 | 丁 ...

最新文章

  1. Jaspersoft Studio简介
  2. sql里判断字段是否为空值
  3. 动态生成表格呈现还是将表格直接绑定gridview等控件呈现的开发方式选择依据...
  4. android -- 蓝牙 bluetooth (二) 打开蓝牙
  5. (优秀文章保存)Quartz优秀文章保存
  6. java解析上的jar包里的pom_Maven引入本地Jar包并打包进War包中的方法
  7. 六、基于UDP的服务器端/客户端
  8. YDOOK:ESP8266 flash 工具 flash_download_tool_v3.8.5 下载安装教程
  9. 数据库实验1---创建数据库和表
  10. HC05蓝牙模块配对
  11. 用命令行方式写Android应用
  12. 【Tools系列】之Excel冻结窗格
  13. 科创人·优锘科技COO孙岗:错误问题找不到正确答案,求索万物可视的大美未来
  14. Kubernetes 健康检查之 livenessProbe/readinessProbe
  15. 【规律】Cunning Friends
  16. 戴尔计算机的机械硬盘容量,新款戴尔g3加装机械硬盘教程终极版
  17. hibernate完整jar包下载
  18. 阿里云发布的数加是什么鬼
  19. Python自动玩俄罗斯方块小游戏
  20. NC6.5与UAP开发学习完整教程

热门文章

  1. 关于IBM的X3200M3型IMM和UEFI的问题解决方案汇总
  2. 框架、架构和设计模式?!
  3. Celeron D的型号参考
  4. 微服务架构的中国式落地
  5. [UNR #3]百鸽笼
  6. Word 中给公式自动编号
  7. 意外发现一款很好用的开源BI工具——DataEase
  8. 网页复选框设置只能选一个_网页自动填表基础教程从简单开始
  9. VMware Convert 使用
  10. 最新 PhpStorm 2018 安装及破解方法