系列文章目录

python爬虫实战——爬取淘宝商品信息并导入EXCEL表格(超详细).

python多线程爬取壁纸 妈妈再也不担心我没壁纸了!.

python爬虫爬取虎牙数据(简单利用requests库以及Beautifulsoup).

python爬虫之爬取壁纸(新手入门级).

文章目录

  • 系列文章目录
  • 前言
  • 一、解析URL组成
  • 二、利用正则表达式获取所需的数据
    • 2.数据的优化
  • 三、使用selenium模拟网页刷新
  • 四、总体的函数和代码编写
    • 1.获取html内容
    • 2.正则表达式获取信息
    • 3.获取每页的网页链接
    • 4.将信息写入excel表
    • 5.主函数及开头的编写
  • 总结

前言

上一篇博客具体写了正则表达式的基本操作。
所以本文使用re正则库对猫眼电影前100名的电影数据(电影排名,电影名称,电影主演以及电影评分)进行爬取,使用selenium库刷新页面(防止获取页面html失败),最后将数据导入Excel表格。大致思路与上一篇爬取淘宝数据类似
ps:代码只用于学习不用于任何商业用途
最后效果如图所示


提示:以下是本篇文章正文内容

一、解析URL组成

第一页URL组成为:https://maoyan.com/board/4?offset=0
第二页URL组成为:https://maoyan.com/board/4?offset=10
由此可以得出页面变动的规则在于后面offset的参数

二、利用正则表达式获取所需的数据

打开开发者工具可见下图

可以得到正则表达式如下(示例):

rank = re.findall(r'<dd>.*?board-index.*?>(.*?)</i>', html, re.S)
title = re.findall(r'<p.*?name.*?title="(.*?)".*?</p>', html, re.S)
star = re.findall(r'<p.*?star">(.*?)</p>', html, re.S)
score = re.findall(r'p.*?score.*?integer">(.*?)</i>.*?fraction.*?(\d).*?</p>', html, re.S)

对于正则表达式不明白的可以参考我的上一篇博客:
python爬虫入门必会的操作—正则表达式(详解).

2.数据的优化

我们得到的star和score数据中,star里有很多空格和换行,所以我们用strip()方法去掉,并用replace()方法将匹配到的主演转为空
同时score得到的数据需要两项加起来
代码如下:

star[i].strip().replace('主演:', ''),
score[i][0] + score[i][1])

三、使用selenium模拟网页刷新

在爬取的途中我发现网站需要刷新才能获得我们所需要的html内容所以我们需要selenium代替我们人工刷新(或者自己手动刷新)
刷新网页代码如下:

from selenium import webdriver
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://maoyan.com/board/4?offset=0')
driver.refresh()

四、总体的函数和代码编写

1.获取html内容

def Get_html(url):headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; InfoPath.3; rv:11.0) like Gecko',}r = requests.get(url, headers=headers)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.text

2.正则表达式获取信息

def Get_Xx(html):x = []rank = re.findall(r'<dd>.*?board-index.*?>(.*?)</i>', html, re.S)title = re.findall(r'<p.*?name.*?title="(.*?)".*?</p>', html, re.S)star = re.findall(r'<p.*?star">(.*?)</p>', html, re.S)score = re.findall(r'p.*?score.*?integer">(.*?)</i>.*?fraction.*?(\d).*?</p>', html, re.S)for i in range(0, 10):x.append((rank[i], title[i], star[i].strip().replace('主演:', ''), score[i][0] + score[i][1]))return x

3.获取每页的网页链接

def Url_list():urls = ['https://maoyan.com/board/4?offset=0']for i in range(10, 91, 10):url = 'https://maoyan.com/board/4?offset=' + str(i)urls.append(url)return urls

4.将信息写入excel表

def Write_intoExcel(x):global countfor i in range(len(x)):worksheet.write(count + i + 1, 0, x[i][0])worksheet.write(count + i + 1, 1, x[i][1])worksheet.write(count + i + 1, 2, x[i][2])worksheet.write(count + i + 1, 3, x[i][3])print(x)count = count + len(x)

5.主函数及开头的编写

开头:

import re
import timeimport requests
import xlsxwriter
from selenium import webdriverworkbook = xlsxwriter.Workbook('电影.xlsx')
worksheet = workbook.add_worksheet()
worksheet.set_column('A:A', 20)
worksheet.set_column('B:B', 20)
worksheet.set_column('C:C', 70)
worksheet.set_column('D:D', 20)
worksheet.write('A1', '排名')
worksheet.write('B1', '名字')
worksheet.write('C1', '主演')
worksheet.write('D1', '评分')

主函数:

if __name__ == "__main__":driver = webdriver.Chrome()driver.maximize_window()driver.get('https://maoyan.com/board/4?offset=0')x = []count = 0urls = Url_list()for url in urls:html = Get_html(url)x = Get_Xx(html)Write_intoExcel(x)time.sleep(5) # 这里设置了每5s进行一次页面刷新driver.refresh()workbook.close()

最后完整代码:


# -*- coding: utf-8 -*-
# @Time    : 2020/11/17 17:00
# @Author  : cc
# @E-mail  : 1215177216@qq.com
# @Site    :
# @File    : 猫眼电影.py
# @Software: PyCharm
# 本代码只用于学习!
import re
import time
import requests
import xlsxwriter
from selenium import webdriverworkbook = xlsxwriter.Workbook('电影.xlsx')
worksheet = workbook.add_worksheet()
worksheet.set_column('A:A', 20)
worksheet.set_column('B:B', 20)
worksheet.set_column('C:C', 70)
worksheet.set_column('D:D', 20)
worksheet.write('A1', '排名')
worksheet.write('B1', '名字')
worksheet.write('C1', '主演')
worksheet.write('D1', '评分')def Get_html(url):headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; InfoPath.3; rv:11.0) like Gecko',}r = requests.get(url, headers=headers)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.textdef Get_Xx(html):x = []rank = re.findall(r'<dd>.*?board-index.*?>(.*?)</i>', html, re.S)title = re.findall(r'<p.*?name.*?title="(.*?)".*?</p>', html, re.S)star = re.findall(r'<p.*?star">(.*?)</p>', html, re.S)score = re.findall(r'p.*?score.*?integer">(.*?)</i>.*?fraction.*?(\d).*?</p>', html, re.S)for i in range(0, 10):x.append((rank[i], title[i], star[i].strip().replace('主演:', ''), score[i][0] + score[i][1]))return xdef Write_intoExcel(x):global countfor i in range(len(x)):worksheet.write(count + i + 1, 0, x[i][0])worksheet.write(count + i + 1, 1, x[i][1])worksheet.write(count + i + 1, 2, x[i][2])worksheet.write(count + i + 1, 3, x[i][3])print(x)count = count + len(x)def Url_list():urls = ['https://maoyan.com/board/4?offset=0']for i in range(10, 91, 10):url = 'https://maoyan.com/board/4?offset=' + str(i)urls.append(url)return urlsif __name__ == "__main__":driver = webdriver.Chrome()driver.maximize_window()driver.get('https://maoyan.com/board/4?offset=0')x = []count = 0urls = Url_list()for url in urls:html = Get_html(url)x = Get_Xx(html)Write_intoExcel(x)time.sleep(5)driver.refresh()workbook.close()

总结

最后觉得写的好的

python爬虫实战——爬取猫眼电影TOP100并导入excel表相关推荐

  1. 爬虫,爬取猫眼电影Top100的电影名与评分

    ** 爬虫,爬取猫眼电影Top100的电影名与评分 ** import requests import threading import reclass maoyan_top500(threading ...

  2. python爬电影_Python爬虫项目--爬取猫眼电影Top100榜

    本次抓取猫眼电影Top100榜所用到的知识点: 1. python requests库 2. 正则表达式 3. csv模块 4. 多进程 正文 目标站点分析 通过对目标站点的分析, 来确定网页结构, ...

  3. 【Python爬虫】爬取猫眼电影排行榜并存放至csv文件

    在进行本节实战之前,希望您对requests库以及正则表达式有所了解. 运行平台:windows **Python版本: Python3.x ** 一.依赖库的安装 在本节实战之前,请确保已经正确安装 ...

  4. python爬虫,爬取猫眼电影1(正则表达式)

    本文用正则.xpath.beautifulsoup.css.pyquery几种不同的方式,爬取猫眼电影.只是记录过程.比较乱. 猫眼电影现在也添加了一些反爬虫机制,如果直接用requests可能会40 ...

  5. 【Python爬虫】爬取猫眼电影票房

    题记 本文旨在记录爬取猫眼电影国内票房榜单的过程,以及对脚本内字体文件反爬函数的说明. 环境 系统: Windows 10 Python版本: Python 3.7 爬取时间: 2019.3.19 难 ...

  6. python爬虫实战--爬取猫眼专业版-实时票房

    小白级别的爬虫入门 最近闲来无事,发现了猫眼专业版-实时票房,可以看到在猫眼上映电影的票房数据,便验证自己之前学的python爬虫,爬取数据,做成.svg文件. 爬虫开始之前 我们先来看看猫眼专业版- ...

  7. Python全栈开发-Python爬虫-05 爬取猫眼电影榜单信息

    爬取猫眼电影榜单信息(翻页) 一. 获取url及headers 首先进入猫眼电影首页: 猫眼电影 之后点击菜单栏的 榜单 并在下面选择 TOP100榜 接着右击检查并刷新界面,在Network中找到4 ...

  8. python爬虫基础爬取猫眼电影

    爬取猫眼电影排行榜第一页 import requests from requests.exceptions import RequestException from sqlalchemy import ...

  9. 【JAVA爬虫】爬取猫眼电影TOP100并将数据存入数据库

    前几天的简单写了个利用JSOUP进行JAVA爬虫,里面有谈到后续版本会更新数据库操作,所以这次来更新了. 版本更新 此次的版本里数据爬取部分新增了[电影主演-star]和[电影评分-score]部分, ...

  10. python爬虫,爬取猫眼电影2(xpath和bs4)

    接着上面的. 使用xpath提取信息,虽然python很多库,比如beautifulsoup,也有很多功能,比如查找节点,添加删除节点.但是个人感觉对爬虫来说,最重要的还是提取信息,当然,顺利的提取信 ...

最新文章

  1. php empty()和isset()的区别
  2. 一道面试题:用shell写一个从1加到100的程序
  3. jenkins集群测试环境原理
  4. hdu-2209 dfs
  5. AI人的Home—TechBeat!!!
  6. SAP UI5 应用开发教程之十六 - 图标 icon 的使用
  7. 差分隐私与可穿戴式设备调查【笔记】
  8. opengl 关于glewGetContext没有定义
  9. 4 python 中 关于数值及运算
  10. 设计模式之GOF23代理模式02
  11. 七、Oracle学习笔记:数值函数
  12. 宕机20秒做到客户无感知,如何实现?
  13. 代码整洁之道读书笔记----第三章---函数--第三节-函数结构的优化
  14. 发那科系统C语言执行器,FANUC NC Guide数控仿真系统 PMC梯形图模拟
  15. 计算机cmd查询ip地址,cmd查ip地址(cmd命令查看别人的ip)
  16. 我的IC之旅——资深芯片设计验证工程师成长——“胡”说IC工程师完美进阶
  17. maven项目中通过idea工具打jar包
  18. 求问解决方法,感激不尽
  19. 数据库系统概念笔记——第4章 中级SQL
  20. 服务器抓不到mrcp协议,MRCP协议

热门文章

  1. 计算机组成原理 第二版 课后答案 (唐朔飞) 1~8章
  2. VMware8安装教程
  3. 树莓派 armv几_如何在具有armv6处理器的树莓派板上安装和使用Java 11和JavaFX 11
  4. php过往版本下载,PHPwind微版本 历史版本及升级包下载_20181226
  5. 2022年软件评测师考试大纲
  6. cad黑色背景变成白色_学会了、让你前程似锦的CAD完整版教程
  7. 网络+系统+ITSM工具Network+system+ITSM tool
  8. 是德科技N9020A 频谱分析仪技术资料说明
  9. flash 10 android,adobe flash 10.0.0
  10. Android 11 存储权限适配指南