# Ref: https://fishc.com.cn/forum.php?mod=viewthread&tid=101887&extra=page%3D1%26filter%3Dtypeid%26typeid%3D722

import requests
from bs4 import BeautifulSoup
import openpyxl def open_url(url):
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36'}
res = requests.get(url, headers=headers)
res.raise_for_status()
res.encoding = res.apparent_encoding
return res.text def parserHtml(html) -> object:
try:
soup = BeautifulSoup(html, 'html.parser')
titles = []
hrefs = []
messages_movie = []
messages_star = [] # 名称
titles_targets = soup.find_all('div', class_='hd') for each in titles_targets:
titles.append(each.a.span.text)
hrefs.append(each.a['href']) # 链接 # 信息
bd_targets = soup.find_all('div', class_='bd')
for each in bd_targets:
try:
messages_movie.append(each.p.text.split('\n')[1].strip() +
each.p.text.split('\n')[2].strip())
except:
continue # 评分
star_targets = soup.find_all('span', class_='rating_num')
for each in star_targets:
messages_star.append(each.text) # result
result = []
for i in range(len(messages_star)):
# result.append(titles[i] + messages_movie[i] + messages_star[i] + '\n') # save to text
result.append([titles[i], messages_star[i], messages_movie[i], hrefs[i]])\ return result
except:
print('解析错误') # def sava_excel(result):
# try:
# with open(r'./Python_Excel_小甲鱼/Top_DouBan_250.txt', 'w', encoding='utf-8') as f:
# for each in result:
# f.write(each)
# f.close()
# except:
# print('存储错误') def save_excel(result):
try:
wb = openpyxl.Workbook()
ws = wb.active
ws['A1'] = '电影名称'
ws['B1'] = '评分'
ws['C1'] = '电影信息'
ws['D1'] = '电影链接' for each in result:
ws.append(each)
wb.save('Top_DouBan_250.xlsx')
except:
print('保存Excel错误') # 获取页面
def get_depth(html):
try:
soup = BeautifulSoup(html, 'html.parser')
depth = soup.find('span', class_='next').previous_sibling.previous_sibling.text
return depth
except:
print('获取页数错误') def main():
host = r'https://movie.douban.com/top250'
html = open_url(host)
depth = get_depth(html) result = [] for i in range(int(depth)):
url = host + '/?start=' + str(25*i) + '&filter='
html = open_url(url)
result.extend(parserHtml(html))
save_excel(result) if __name__ == '__main__':
main()

Douban Top 250爬虫的更多相关文章

  1. IMDB TOP 250爬虫

    这个小学期Python大作业搞了个获取IMDB TOP 250电影全部信息的爬虫.第二次写爬虫,比在暑假集训时写的熟练多了.欢迎大家评论. ''' ************************** ...

  2. 爬取豆瓣电影TOP 250的电影存储到mongodb中

    爬取豆瓣电影TOP 250的电影存储到mongodb中 1.创建项目sp1 PS D:\scrapy> scrapy.exe startproject douban 2.创建一个爬虫 PS D: ...

  3. 用python爬取豆瓣电影Top 250

    首先,打开豆瓣电影Top 250,然后进行网页分析.找到它的Host和User-agent,并保存下来. 然后,我们通过翻页,查看各页面的url,发现规律: 第一页:https://movie.dou ...

  4. 吐血推荐250部必看电影下载 IMDB TOP 250 download

    中文名: IMDB Top 250合辑 TLF-MiniSD收藏版英文名: IMDB Top 250 TLF-MiniSD Collection版本: (更新至TOP119)[MiniSD]发行日期: ...

  5. Python开发爬虫之静态网页抓取篇:爬取“豆瓣电影 Top 250”电影数据

    所谓静态页面是指纯粹的HTML格式的页面,这样的页面在浏览器中展示的内容都在HTML源码中. 目标:爬取豆瓣电影TOP250的所有电影名称,网址为:https://movie.douban.com/t ...

  6. Python爬虫-豆瓣电影 Top 250

    爬取的网页地址为:https://movie.douban.com/top250 打开网页后,可观察到:TOP250的电影被分成了10个页面来展示,每个页面有25个电影. 那么要爬取所有电影的信息,就 ...

  7. 豆瓣电影 Top 250

    import refrom urllib.request import urlopen def getPage(url): # 获取网页的字符串 response = urlopen(url) ret ...

  8. python3 爬虫---爬取豆瓣电影TOP250

    第一次爬取的网站就是豆瓣电影 Top 250,网址是:https://movie.douban.com/top250?start=0&filter= 分析网址'?'符号后的参数,第一个参数's ...

  9. python+SQLAlchemy+爬虫

    python+SQLAlchemy+爬虫 前面分享了SQLAlchemy的知识,这次我共享一下学习用python开发爬虫再把爬出来的数据放到用SQLAlchemy的数据库上面的知识,当然我这个是带测试 ...

随机推荐

  1. WPF---数据绑定之ValidationRule数据校验(六)

    一.概述 我们知道,Binding好比架设在Source和Target之间的桥梁,数据可以借助这个桥梁进行流通.在数据流通的过程中,我们可以在Binding这座桥梁上设置关卡,对数据的有效性进行验证. ...

  2. 快速创建Spring web项目

    第一步,把包和文件夹建好 第二步.pom文件添加依赖 放到properties标签内 <spring_version>4.1.2.RELEASE</spring_version> ...

  3. 老鼠走迷宫II

    转自:http://blog.csdn.net/holymaple/article/details/8636234 由于迷宫的设计,老鼠走迷宫的入口至出口路径可能不止一条,如何求出所有的路径呢? 解法 ...

  4. 最全华为鸿蒙 HarmonyOS 开发资料汇总

    开发 本示例基于 OpenHarmony 下的 JavaScript UI 框架,进行项目目录解读,JS FA.常用和自定义组件.用户交互.JS 动画的实现,通过本示例可以基本了解和学习到 JavaS ...

  5. jdbc操作mysql(一)

    java.sql包 在使用jdbc之前,我们先看看有关操作jdbc会用到的几个类和接口,通过查看官方文档可知 DriverManager:用于管理一组JDBC驱动程序的基本服务,即管理数据库中的所有驱 ...

  6. rEFI引导Win10+Ubuntu14双系统

    公司买了一台Alienware 15 R2,安装双系统折腾死我了,现在记录一下安装过程. 硬盘: 256固态+1T机械 安装顺序: 先Windows,再Ubuntu 不同BIOS启动方式下安装系统 U ...

  7. 使用什么快捷键,关闭、打开、最小化qq聊天窗口

    Alt+F4或者Alt+C关闭聊天窗口.Alt+空格+N 最小化聊天窗口.Alt+H 打开聊天记录,打开聊天窗口没有快捷键,必须点击qq好友图标

  8. 学习Linux tar 命令:最简单也最困难

    摘要:在本文中,您将学习与tar 命令一起使用的最常用标志.如何创建和提取 tar 存档以及如何创建和提取 gzip 压缩的 tar 存档. 本文分享自华为云社区<Linux 中的 Tar 命令 ...

  9. Kubernetes 组件简介

    关于Kubernetes是什么??? Kubernetes是致力于提供跨主机集群的自动部署.扩展.高可用以及运行应用程序容器的平台. Kubernets集群组成有哪些??? k8s由master和no ...

  10. Smooth

      考场\(AC\),还是很开心的.   考虑这题让你干啥,就是给你一堆素数,然后让你用他们去构造数,求其中第\(k\)小的.   我们可以用系数累乘的方式,同时利用小根堆实现有序,加一个优化,就过了 ...