第七周第一节实践课,学习的内容是爬虫。之情一直对爬虫有兴趣但因为懒所以没有付诸实践,现在正是大好机会。

【目标】

爬取猫眼网站前100的电影,保存到csv中,并保存他们的封面。

【遇到的主要问题】

  1. 正则表达式。
  2. 别忘了创建保存图片用的文件夹。

【代码存档】

import csv
import reimport requests
from requests import RequestException# 2.主调度程序
def main():# 起始URLstart_url="http://maoyan.com/board/4"for i in range(0,100,10)    :# 获取响应文本内容html = get_one_page(url=start_url, offset=i)if html is None:print("链接:%s?offset=%s异常".format(start_url,i))continuepassfor item in parse_one_page(html=html):store_data(item)download_thumb(item["title"],item["thumb"])passpass
# 3.页面内容获取
# 请求一个页面返回响应内容
def get_one_page(url,offset):print("开始回馈!")try:headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36'}response = requests.get(url=url, headers=headers,params={"offset":offset})if response.status_code==200:return response.textpasselse:return Nonepasspassexcept RequestException as e:return Nonepasspass# 4.页面解析
# 解析一个页面
def parse_one_page(html):print("解析中!")pattern = '<dd>.*?board-index.*?">(\d+)</i>.*?data-src="(.*?)".*?/>.*?movie-item-info.*?title="(.*?)".*?star">' + \'(.*?)</p>.*?releasetime">(.*?)</p>.*?integer">(.*?)</i>.*?fraction">(\d+)</i>.*?</dd>'# re.S匹配多行regex = re.compile(pattern, re.S)items = regex.findall(html)for item in items:yield {'index': item[0],'thumb': get_large_thumb(item[1]),'title': item[2],'actors': item[3].strip()[3:],'release_time': get_release_time(item[4].strip()[5:]),'area': get_release_area(item[4].strip()[5:]),'score': item[5] + item[6]}passpass# 获取上映时间
def get_release_time(data):print("It`s high noon!")pattern = '^(.*?)(\(|$)'regex = re.compile(pattern)w = regex.search(data)return w.group(1)# 获取上映地区
def get_release_area(data):print("Where?Here!")pattern = '.*\((.*)\)'regex = re.compile(pattern)w = regex.search(data)if w is None:return'未知'return w.group(1)# 获取封面大图
def get_large_thumb(url):print("Get Large Pic!")pattern = '(.*?)@.*?'regex = re.compile(pattern)w = regex.search(url)return w.group(1)# 存储数据
def store_data(item):print("Loading")with open('movie.csv','a',newline='',encoding='utf-8') as data_csv:# dialect为打开csv文件的方式,默认是excel,delimiter="\t"参数指写入的时候的分隔符try:csv_writer = csv.writer(data_csv)csv_writer.writerow([item['index'], item['thumb'], item['title'], item['actors'],item['release_time'],item['area'],item['score']])except Exception as e:print(e)print(item)# 下载封面图
def download_thumb(title,url):print("Download Pic!")try:response = requests.get(url=url)# 获取二进制数据with open('thumb/'+title+'.jpg', 'wb') as f:f.write(response.content)f.close()except RequestException as e:print(e)passif __name__ == '__main__':main()print("爬取完成!")pass

001-猫眼排行榜前100电影爬取【爬虫】【Python】相关推荐

  1. 猫眼top前100电影爬取demo(正则初试)

    import json import requests import redef get_one_page(url):response = requests.get(url)if response.s ...

  2. 猫眼电影-爬取(Python)

    此篇文章是根据https://mp.weixin.qq.com/s/rRtb8ATXrVxr3r5uLEhRtA这个文章的步骤进行爬取的.有兴趣的可以直接到该作者的连接查看文章. 介绍一下我的装备: ...

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

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

  4. 爬虫(2)-解析库xpath和beautifulsoup爬取猫眼电影排行榜前100部电影

    解析库爬取猫眼电影前100部电影 认为有用的话请点赞,码字不易,谢谢. 其他爬虫实战请查看:https://blog.csdn.net/qq_42754919/category_10354544.ht ...

  5. 爬虫(1)-正则化表达式爬取猫眼电影排行榜前100部电影

    爬取猫眼电影排行榜前100部电影 文章目录 爬取猫眼电影排行榜前100部电影 1.抓取首页 2.正则化表达式提取信息 3.保存到文件中 4.抓取前100部电影 认为有用的话请点赞,码字不易,谢谢. 其 ...

  6. python爬取微信小程序(实战篇)_python爬取猫眼的前100榜单并展示在微信小程序

    首先分析要爬取的网页,对其结构及数据获取方式解析后,可采用正则筛选自己要的数据 猫眼榜单.png import requests from requests.exceptions import Req ...

  7. 【宅男宅女们的福音】电影天堂最新电影爬取及搜索脚本

    多线程电影天堂最新资源爬取脚本.电影搜索脚本 PS:方便大家使用写到了HTML中生成表格. 线程可以在脚本里直接改,测试线程为30时IP可能会被限制访问.[阳光电影是电影天堂的马甲] 环境: Pyth ...

  8. 龙珠直播前50信息爬取并保存图片和天池排名爬取

    龙珠直播信息前50条爬取 import urllib.request as urfrom bs4 import BeautifulSoup import re import pandas as pd ...

  9. python爬取京东python书籍信息

    python爬取京东python书籍信息 直接上代码镇宅......................... 需要用到的库:requests lxml pymongo 需要安装这些库,并且配置好mong ...

最新文章

  1. NET Framework 2.0中的数据访问新特性
  2. wattosR6中文化步骤
  3. javax.mail 发送
  4. ZipOutputStream 用法 小计
  5. java字节流转字符流的步骤_字节流-java入门基础笔记-51CTO博客
  6. Linux系统编程30:进程信号之产生信号的四种方式(Core Dump,kill,raise)
  7. 谷歌开源缩放模型EfficientNets:ImageNet准确率创纪录,效率提高10倍
  8. win8游戏开发教程开篇
  9. 等级保护三级安全建设
  10. 突破百度知道瓶颈,问淘宝引流
  11. openpyxl 取消合并单元格且填充
  12. python pyplot bar 参数_数据可视化之条形图(1):Axes.bar
  13. ORACLE的exp和expdp何时需要特权豁免访问策略(Exempt Access Policy)进行导出?
  14. 启发式算法与机器学习的区别_使用强化学习训练受启发的四足机器人
  15. WPF中的数据模板(DataTemplate)
  16. xmanager使用教程
  17. CAD怎么添加打印机设备?CAD打印机添加步骤
  18. Python制作背单词exe
  19. C++ 文件操作(CFile类)
  20. 华为android怎么玩,如何在计算机上使用Android模拟器玩华为帐户手机游戏? ---已回复...

热门文章

  1. 数字逻辑复习(Wust)
  2. “科林明伦杯”哈尔滨理工大学第十届程序设计竞赛——H.直线【JAVA大数 | Python】
  3. 不懂就学——什么是input和output?
  4. 谁说程序员年龄大了,就没出路了?
  5. 如何搭建企业数据化运营体系?
  6. 危化品化工企业双重预防机制五有标准是什么包括哪些内容
  7. Mysql自定义函数:身份证号码的真实性判定
  8. 解决耳机插在主机上没有声音的问题
  9. 强化学习笔记(2)深度学习tensorflow2.5以上版本环境安装
  10. kubernetes之volumes使用