Douban Top 250爬虫
# 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爬虫的更多相关文章
- IMDB TOP 250爬虫
这个小学期Python大作业搞了个获取IMDB TOP 250电影全部信息的爬虫.第二次写爬虫,比在暑假集训时写的熟练多了.欢迎大家评论. ''' ************************** ...
- 爬取豆瓣电影TOP 250的电影存储到mongodb中
爬取豆瓣电影TOP 250的电影存储到mongodb中 1.创建项目sp1 PS D:\scrapy> scrapy.exe startproject douban 2.创建一个爬虫 PS D: ...
- 用python爬取豆瓣电影Top 250
首先,打开豆瓣电影Top 250,然后进行网页分析.找到它的Host和User-agent,并保存下来. 然后,我们通过翻页,查看各页面的url,发现规律: 第一页:https://movie.dou ...
- 吐血推荐250部必看电影下载 IMDB TOP 250 download
中文名: IMDB Top 250合辑 TLF-MiniSD收藏版英文名: IMDB Top 250 TLF-MiniSD Collection版本: (更新至TOP119)[MiniSD]发行日期: ...
- Python开发爬虫之静态网页抓取篇:爬取“豆瓣电影 Top 250”电影数据
所谓静态页面是指纯粹的HTML格式的页面,这样的页面在浏览器中展示的内容都在HTML源码中. 目标:爬取豆瓣电影TOP250的所有电影名称,网址为:https://movie.douban.com/t ...
- Python爬虫-豆瓣电影 Top 250
爬取的网页地址为:https://movie.douban.com/top250 打开网页后,可观察到:TOP250的电影被分成了10个页面来展示,每个页面有25个电影. 那么要爬取所有电影的信息,就 ...
- 豆瓣电影 Top 250
import refrom urllib.request import urlopen def getPage(url): # 获取网页的字符串 response = urlopen(url) ret ...
- python3 爬虫---爬取豆瓣电影TOP250
第一次爬取的网站就是豆瓣电影 Top 250,网址是:https://movie.douban.com/top250?start=0&filter= 分析网址'?'符号后的参数,第一个参数's ...
- python+SQLAlchemy+爬虫
python+SQLAlchemy+爬虫 前面分享了SQLAlchemy的知识,这次我共享一下学习用python开发爬虫再把爬出来的数据放到用SQLAlchemy的数据库上面的知识,当然我这个是带测试 ...
随机推荐
- 编写一个简单的COM组件
参考网站:编写一个简单的COM组件_a ray of sunshine-CSDN博客 (1) 用MIDL编写.idl文件 //将以下代码保存成 IXIYIZ.idl 文件 //在命令行上进行编译,编译 ...
- apche的BeanUtils避免使用!
原文出处 建议,不要使用apache的BeanUtils进行属性拷贝了,建议使用Spring 核心包bean下面的BeanUtils进行替代! 使用和对比出处
- 你知道 JavaScript 中的 Arguments 对象都有哪些用途吗?
JavaScript 中 Arguments 对象的用途总结. 前言 相信我们很多人在代码开发的过程中都使用到过一个特殊的对象 -- Arguments 对象. 在实际开发中,Arguments 对象 ...
- 在ES5中模拟类
1.Object.create()方法创建一个新对象,使用现有的对象来提供新创建的对象的__proto__. var _this = Object.create(fn.prototype);这句代码的 ...
- ASP截取字符 截取字符之间的字符
ASP截取字符:MID函数Mid(变量或字串符,开始字节, 结尾字节(可不填)) InStrRev(变量, "字串符") 最后出现位置InStr(变量, "字串符&qu ...
- Go-内置函数之append、recover用法
package main import "fmt" import "time" func test() { defer func() { if err := r ...
- Qt5-调试器安装
这周末正好有空,我好好研究了下如何给Qt安装调试器.我们在windows下一般安装两种Qt版本,一种是基于Visual Stuido编译器的(MSVC),另一种是基于g++的MinGW.使用后者一般调 ...
- Oracle环境配置之山路十八弯
Oracle数据库的安装 背景: 因为疫情原因,只能在家上网课,学习Oracle的时候需要安装数据库,但是!! 安装的时候出现了报错: 无法检查指定的位置是否位于 CFS 上. 出来这个基本无解,这个 ...
- QT开发实战一:图片显示
测试平台 宿主机平台:Ubuntu 12.04.4 LTS 目标机:Easy-ARM IMX283 目标机内核:Linux 2.6.35.3 QT版本:Qt-4.7.3 Tslib版本:tslib-1 ...
- 浅析mybatis中${}和#{}取值区别
mybatis作为一个轻量级的ORM框架,应用广泛,其上手使用也比较简单:一个成熟的框架,必然有精巧的设计,值得学习. 在使用mybatis框架时,在sql语句中获取传入的参数有如下两种方式: ${p ...