from bs4 import BeautifulSoup

import openpyxl

import re

import urllib.request

import urllib.error

# 访问url

def ask_url(url):

# 伪装浏览器

head = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) \

AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'}

req = urllib.request.Request(url, headers=head) # 包装

try:

response = urllib.request.urlopen(req, timeout=3) # 访问 超时3s结束

html = response.read().decode('utf-8') # 解码

return html # 返回url网页html源码

except urllib.request.HTTPError as e:

if hasattr(e, 'code'):

print(e.code)

except urllib.error.URLError as e:

if hasattr(e, 'reason'):

print(e.reason)

# 爬取网页

def crawl_web(base_url):

data_list = []

# re电影名

re_movie_name = re.compile(r'(.*?)')

# re影片详情连接

re_movie_link = re.compile(r'')

# re影片海报图片

re_movie_img = re.compile(r'', re.S)

# re电影简介

re_movie_introduction = re.compile(r'

(.*?)

', re.S)

# re评分

re_movie_score = re.compile(

r'(.*?)')

# re评分人数

re_movie_judge = re.compile(r'(.*?)人评价')

# re一句话评价

re_moive_inq = re.compile(r'(.*?)。*')

for i in range(10):

url = base_url + str(i * 25)

html = ask_url(url) # 获取网页源码

soup = BeautifulSoup(html, 'html.parser') # 解析源码

for item in soup.find_all(class_='item'):

item = str(item).replace(u'\xa0', ' ') # 获取的页面中有奇妙代码(●'◡'●),所以要去掉

data = []

# 获取需要的信息

movie_name = re.findall(re_movie_name, item)

if len(movie_name) > 1:

data.append(movie_name[0])

data.append(movie_name[1].replace('/', ''))

else: # 没有外语名也要空出来,方便后续储存

data.append(movie_name[0])

data.append('暂无')

movie_link = re.findall(re_movie_link, item)[0]

data.append(movie_link)

movie_img = re.findall(re_movie_img, item)[0]

data.append(movie_img)

movie_introduction = re.findall(re_movie_introduction, item)[0]

movie_introduction = re.sub(

r'
', ' ', movie_introduction).strip() # 存入简介时要去掉含有的html标签

data.append(movie_introduction)

movie_score = re.findall(re_movie_score, item)[0]

data.append(movie_score)

movie_judge = re.findall(re_movie_judge, item)[0]

data.append(movie_judge)

moive_inq = re.findall(re_moive_inq, item)

if len(moive_inq) == 0: # 有时候没有一句话短评,同上要空出

data.append('暂无')

else:

data.append(moive_inq[0])

# 添加到data_list

data_list.append(data)

return data_list

def save_data(save_path, data_list):

wb = openpyxl.Workbook()

ws = wb.active

ws.title = '豆瓣TOP250'

first_row = ("电影名", "其他名", "影片详情连接", "影片海报图片",

"电影简介", "评分", "评分人数", "一句话评价")

temp = 1

for i in first_row: # 生成表头

ws.cell(1, temp, i)

temp += 1

row = 1

for i in data_list: # 存入数据

row += 1

column = 1

for j in i:

ws.cell(row, column, j)

column += 1

wb.save(save_path+'豆瓣TOP250.xlsx')

return None

if __name__ == "__main__":

base_url = 'https://movie.douban.com/top250?start='

save_path = 'E:\\School\\Study\\Python\\爬虫\\'

data_list = crawl_web(base_url)

save_data(save_path, data_list)

print('Crawl over')

python爬取豆瓣电影top250_Python 爬取豆瓣电影Top250排行榜,爬虫初试相关推荐

  1. python 豆瓣电影top250_python 爬豆瓣电影top250

    基础页面:https://movie.douban.com/top250 代码: from time import sleep from requests import get from bs4 im ...

  2. python爬取豆瓣排行榜电影(静态爬取)(二次爬取)

    目录 python爬取豆瓣排行榜电影(静态爬取) 获取网站url 获取网站headers get请求访问url BeautifulSoup解析网站 爬取html数据 完整代码 python爬取豆瓣排行 ...

  3. python爬取豆瓣电影排行前250获取电影名称和网络链接[静态网页]————爬虫实例(1)

    目录 1.算法原理: 2.程序流程: 3.程序代码: 4.运行结果(部分结果展示): 5.结果分析: 1.算法原理: (1)利用import命令导入模块或者导入模块中的对象: ①利用requests库 ...

  4. PYTHON爬虫爬取豆瓣电影的一周口碑电影排行榜

    代码前准备: 1.使用Eclipse进行开发,关于eclipse搭建python的环境见:https://www.cnblogs.com/telwanggs/p/7016803.html 2.使用bs ...

  5. python爬虫(一)爬取豆瓣电影排名前50名电影的信息

    python爬虫(一)爬取豆瓣电影排名前50名电影的信息 在Python爬虫中,我们可以使用beautifulsoup对网页进行解析. 我们可以使用它来爬取豆瓣电影排名前50名的电影的详细信息,例如排 ...

  6. Python爬虫实战(1) | 爬取豆瓣网排名前250的电影(下)

    在Python爬虫实战(1) | 爬取豆瓣网排名前250的电影(上)中,我们最后爬出来的结果不是很完美,这对于"精益求精.追求完美的"程序猿来说怎么能够甘心 所以,今天,用pyth ...

  7. python selenium爬虫豆瓣_Scrapy+Selenium爬取豆瓣电影评论

    首先需要对目标网站进行分析,具体的分析这里不详细介绍.目标网站:豆瓣某个电影评论页面 https://movie.douban.com/subject/1292052/reviews,这个电影是肖申克 ...

  8. Python爬虫实战(1) | 爬取豆瓣网排名前250的电影(上)

    今天我们来爬取一下豆瓣网上排名前250的电影. 需求:爬取豆瓣网上排名前250的电影,然后将结果保存至一个记事本里. 开发环境: python3.9 pycharm2021专业版 我们先观察网页,看看 ...

  9. python项目开发案例集锦 豆瓣-Python第三个项目:爬取豆瓣《哪吒之魔童降世》 短评...

    前面爬完网站信息图片之后,今天的又有了个小目标,最近的电影哪吒很火,去豆瓣上看了一下 影评,决定了今天主要是实现Python第三个项目:爬取豆瓣<哪吒之魔童降世> 短评,然后下载在exce ...

最新文章

  1. Android自定义流式布局-FlowLayout
  2. Linux安装Gradle
  3. 微服务和其他常见架构
  4. weblogic概览下的上下文根配置_Weblogic服务下获取上下文路劲问题
  5. BZOJ5289 洛谷4437:[HNOI/AHOI2018]排列——题解
  6. Apache Mahout:入门
  7. 学计算机买电脑显卡1605ti够吗,铭瑄GTX1660Ti显卡值得买吗 铭瑄GTX1660Ti终结者显卡评测...
  8. 程序包sun.misc不存在
  9. 总结CMS常见面试题
  10. 【基础教程】信噪比+香农公式【1748期】
  11. java树广度优先_如何在功能上生成树广度优先 . (使用Haskell)
  12. centos7网络配置总结
  13. 西门子S7系列PLC的主要种类及应用软件
  14. centos7安装部署kvm,照做就行
  15. microsoftvisual c++ runtime library错误
  16. Linux:chmod -R 777 * 是什么意思?
  17. Python为何能上位碾压Java?
  18. python内存持续增长_Python 进程内存增长解决方案
  19. Quartus Prime官方下载方法
  20. 芬兰免学费留学选拔项目“Finfly芬鸟计划”详细介绍

热门文章

  1. C++11标准模板(STL)- 算法(std::set_symmetric_difference)
  2. Leetcode 1348:推文计数
  3. com.monotype.android.font.ktoppo,Zawgyi Myanmar Fonts Free
  4. 基于eNSP的企业PON入云网络模拟
  5. 修改mc服务器名字,好听的mc服务器名字
  6. h264基础知识梳理
  7. Fragment XXXXXX{xxxxxxxxx} not attached to Activity
  8. CAD图纸显示不全?别慌,有浩辰CAD!
  9. 数学----三角函数公式推导
  10. BT源代码学习心得(五):统一网络服务接口--RawServer -- 转贴自 wolfenstein (NeverSayNever)