文章目录

  • 1. 利用 requests 库和正则表达式抓取猫眼电影 TOP100 的相关内容
    • (1)[猫眼电影网址](https://maoyan.com/board/4?offset=0)如下,共10页。
    • (2)定义get_one_page(url)方法,获取指定网页的源代码。
    • (3)定义parse_one_page(html)方法,解析源代码,获取每条电影信息。
    • (4)定义write_to_file(content)方法,将电影信息写入Excel文件中。
    • (5)定义main(offset)方法,总合所有方法。
    • (6)使用for循环遍历所有网址。

1. 利用 requests 库和正则表达式抓取猫眼电影 TOP100 的相关内容

(1)猫眼电影网址如下,共10页。

https://maoyan.com/board/4?offset=0
https://maoyan.com/board/4?offset=10

https://maoyan.com/board/4?offset=90

import re
import json
import time
import requests
from requests.exceptions import RequestException
#from fake_useragent import UserAgent

(2)定义get_one_page(url)方法,获取指定网页的源代码。

def get_one_page(url):"""发送请求,获取响应!:param url::return:"""try:headers = {'User-Agent':'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0'}response = requests.get(url,timeout=30, headers=headers)if response.status_code == 200:return response.textreturn Noneexcept RequestException:return None

(3)定义parse_one_page(html)方法,解析源代码,获取每条电影信息。

def parse_one_page(html):"""利用正则表达式提取响应里的电影信息,并形成结构化数据!:param html::return:"""pattern = re.compile('<dd>''.*?board-index.*?>(.*?)</i>'#index'.*?data-src="(.*?)"'#image'.*?name.*?a.*?>(.*?)</a>'#title'.*?star.*?>(.*?)</p>'#主演'.*?releasetime.*?>(.*?)</p>'#上映时间'.*?integer.*?>(.*?)</i>'#评分 整数部分'.*?fraction.*?>(.*?)</i>'#评分 小数部分'.*?</dd>', re.S)items = re.findall(pattern, str(html))for item in items:yield {'index': item[0],'image': item[1],'title': item[2].strip(),'actor': item[3].strip()[3:] if len(item[3]) > 3 else '','time' : item[4].strip()[5:] if len(item[4]) > 5 else '','score': item[5].strip() + item[6].strip()}

(4)定义write_to_file(content)方法,将电影信息写入Excel文件中。

def write_to_file(content):"""存储数据,通过JSON库的dumps()方法实现字典的序列化,写入到一个文本文件!:param content::return:"""with open('result.txt', 'a', encoding='utf-8') as f:f.write(json.dumps(content, ensure_ascii=False) + ',\n')

(5)定义main(offset)方法,总合所有方法。

def main(offset):"""通过构造URL中的offset参数(偏移量值),实现TOP100十页数据的爬取!:param offset::return:"""url = "http://maoyan.com/board/4?offset=" + str(offset)html = get_one_page(url)for item in parse_one_page(html):print(item)write_to_file(item)

(6)使用for循环遍历所有网址。

if __name__ == '__main__':for i in range(9):main(offset=i * 10)time.sleep(5)
import re
import json
import time
import requests
from requests.exceptions import RequestException
#from fake_useragent import UserAgentdef get_one_page(url):"""发送请求,获取响应!:param url::return:"""try:headers = {'User-Agent':'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0'}response = requests.get(url,timeout=30, headers=headers)if response.status_code == 200:return response.textreturn Noneexcept RequestException:return Nonedef parse_one_page(html):"""利用正则表达式提取响应里的电影信息,并形成结构化数据!:param html::return:"""pattern = re.compile('<dd>.*?board-index.*?>(.*?)''</i>.*?data-src="(.*?)".*?name.*?a.*?>(.*?)''</a>.*?star.*?>(.*?)''</p>.*?releasetime.*?>(.*?)''</p>.*?integer.*?>(.*?)''</i>.*?fraction.*?>(.*?)''</i>.*?</dd>',re.S)items = re.findall(pattern, str(html))for item in items:yield {'index': item[0],'image': item[1],'title': item[2].strip(),'actor': item[3].strip()[3:] if len(item[3]) > 3 else '','time' : item[4].strip()[5:] if len(item[4]) > 5 else '','score': item[5].strip() + item[6].strip()}def write_to_file(content):"""存储数据,通过JSON库的dumps()方法实现字典的序列化,写入到一个文本文件!:param content::return:"""with open('result.txt', 'a', encoding='utf-8') as f:f.write(json.dumps(content, ensure_ascii=False) + ',\n')def main(offset):"""通过构造URL中的offset参数(偏移量值),实现TOP100十页数据的爬取!:param offset::return:"""url = "http://maoyan.com/board/4?offset=" + str(offset)html = get_one_page(url)for item in parse_one_page(html):print(item)write_to_file(item)if __name__ == '__main__':for i in range(1):main(offset=i * 10)time.sleep(5)
import re
import time
import requests
from requests.exceptions import RequestException
import xlwings as xw
#from fake_useragent import UserAgentdef getHTML(url):try:headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'}response = requests.get(url,timeout=30, headers=headers)response.encoding = response.apparent_encodingif response.status_code == 200:return response.textreturn Noneexcept RequestException:return Nonedef findMaoyan(html):global mlistpattern = re.compile('<dd>''.*?board-index.*?>(.*?)</i>'#index'.*?data-src="(.*?)"'#image'.*?name.*?a.*?>(.*?)</a>'#title'.*?star.*?>(.*?)</p>'#主演'.*?releasetime.*?>(.*?)</p>'#上映时间'.*?integer.*?>(.*?)</i>'#评分 整数部分'.*?fraction.*?>(.*?)</i>'#评分 小数部分'.*?</dd>', re.S)items = re.findall(pattern,str(html))for item in items:mlist.append([item[0],#indexitem[1],#imageitem[2].strip(),#titleitem[3].strip()[3:] if len(item[3]) > 3 else '',#主演item[4].strip()[5:] if len(item[4]) > 5 else '',#上映时间item[5].strip() + item[6].strip()])#评分#print(mlist)return mlistdef main():global mlistmlist = [['index', 'image', 'title', '主演', '上映时间', '评分']]for i in range(10):url = "http://maoyan.com/board/4?offset=" + str(i*10)html = getHTML(url)findMaoyan(html)time.sleep(1)# 写入Excel文件wb = xw.Book()sht = wb.sheets('Sheet1')sht.range('a1').value = mlist  # 将数据添加到表格中if __name__ == '__main__':main()


Python 抓取猫眼电影TOP100数据相关推荐

  1. Python爬虫之requests+正则表达式抓取猫眼电影top100以及瓜子二手网二手车信息(四)...

    requests+正则表达式抓取猫眼电影top100 一.首先我们先分析下网页结构 可以看到第一页的URL和第二页的URL的区别在于offset的值,第一页为0,第二页为10,以此类推. 二.< ...

  2. 抓取猫眼电影实时数据

    抓取猫眼电影实时数据 我又回来了,guys!最近也是看到流浪地球,飞驰人生,疯狂的外星人的票房大卖,于是就想着利用python对猫眼做一下票房的数据统计.下面就开始我的表演: 环境: python3. ...

  3. Python爬取猫眼电影TOP100榜

    Python爬取猫眼电影TOP100榜 兴趣点: 这个没什么特别的兴趣,只是单纯爬猫眼练手的人太多了,所以我也打算加入他们,对猫眼员工说一声不好意思了,哈哈哈! 爬取网址: 传送门:https://m ...

  4. 抓取猫眼电影top100

    一.目标 运用requests+正则表达式爬取猫眼电影top100的电影图片.名称.时间.评分等信息,提取站点的url为"http://maoyan.com/board/4",提取 ...

  5. python 爬取猫眼电影网站数据

    完整代码下载:https://github.com/tanjunchen/SpiderProject/tree/master/maoyan python 爬取 movie.douban.com 网站 ...

  6. 详解用爬虫批量抓取猫眼电影票房数据

    "大数据"是一个体量特别大,数据类别特别大的数据集,并且这样的数据集无法用传统数据库工具对其内容进行抓取.管理和处理. "大数据"首先是指数据体量(volume ...

  7. python抓取猫眼电影评论,200多行代码,哈哈

    先展示,结果,爬取保存的txt. 先把评论给抓下来,后面再做jieba云词分析,geo评论区域 分布 直接上接口api,不犯法吧.大家都知道~~~ http://m.maoyan.com/mmdb/c ...

  8. 抓取猫眼电影top100的正则、bs4、pyquery、xpath实现方法

    import requests import re import json import time from bs4 import BeautifulSoup from pyquery import ...

  9. python 抓取猫眼电影评分

    目标网页 完整代码: from selenium import webdriver from PIL import Image from io import BytesIO import time i ...

最新文章

  1. computed vs methods
  2. VS2017创建Linux项目实现远程GDB调试
  3. [poj] 2749 building roads
  4. 【splunk】仪表盘导入导出
  5. 长江存储年底提供自研32层堆叠3D NAND闪存样品
  6. 7.1 elementui的radio无法选中问题
  7. Python读写CSV格式文件
  8. 全数字伺服系统中位置环和电子齿轮的设计
  9. EM算法——解释 转载
  10. 纠错码较副本优势与minio纠错码配置
  11. Java 案例七 超市管理系统(商品清单,商品添加,商品删除,修改库存)
  12. 科三十六项操作方法指导
  13. 智能路由器-OpenWRT 系列六 (远程迅雷离线下载)
  14. 记一次在vue项目上使用七牛文件上传的坑
  15. python断点续传下载_Python 3 爬虫|第12章:并发下载大文件 支持断点续传
  16. Android---简易的底部导航栏
  17. Luogu1197 星球大战
  18. Logback日志配置和简单使用
  19. 双色球彩票生成之一用户彩票号码随机生成
  20. linux多线程编程--学习笔迹4

热门文章

  1. java-Base64编码工具类
  2. C# 微信扫码授权登录
  3. 医院门诊和挂号系统的操作指南
  4. heritrix参考文献
  5. fortran教程6:字符串
  6. python运用实例视频_Python实例教学
  7. 使用Python绘制各种方法的词云图
  8. 系列学习分布式任务调度 XXL-JOB 之第 2 篇 —— 调度中心集群
  9. 系列学习分布式任务调度 XXL-JOB 之第 1 篇 —— XXL-JOB 介绍(调度中心、执行器)
  10. markdown导出以及合并pdf