Python 爬取豆瓣电影Top250排行榜,爬虫初试
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'<span class="title">(.*?)</span>')
# re影片详情连接
re_movie_link = re.compile(r'<a class="" href="(.*?)">')
# re影片海报图片
re_movie_img = re.compile(r'<img.*src="(.*?)".*?>', re.S)
# re电影简介
re_movie_introduction = re.compile(r'<p class="">(.*?)</p>', re.S)
# re评分
re_movie_score = re.compile(
r'<span class="rating_num" property="v:average">(.*?)</span>')
# re评分人数
re_movie_judge = re.compile(r'<span>(.*?)人评价</span>')
# re一句话评价
re_moive_inq = re.compile(r'<span class="inq">(.*?)。*</span>')
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'<br(.*)?>', ' ', 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的信息(转)
今天利用xpath写了一个小爬虫,比较适合一些爬虫新手来学习.话不多说,开始今天的正题,我会利用一个案例来介绍下xpath如何对网页进行解析的,以及如何对信息进行提取的. python环境:pytho ...
- python爬取豆瓣电影Top250(附完整源代码)
初学爬虫,学习一下三方库的使用以及简单静态网页的分析.就跟着视频写了一个爬取豆瓣Top250排行榜的爬虫. 网页分析 我个人感觉写爬虫最重要的就是分析网页,找到网页的规律,找到自己需要内容所在的地方, ...
- Python爬取豆瓣电影top
Python爬取豆瓣电影top250 下面以四种方法去解析数据,前面三种以插件库来解析,第四种以正则表达式去解析. xpath pyquery beaufifulsoup re 爬取信息:名称 评分 ...
- Python爬虫入门:爬取豆瓣电影TOP250
一个很简单的爬虫. 从这里学习的,解释的挺好的:https://xlzd.me/2015/12/16/python-crawler-03 分享写这个代码用到了的学习的链接: BeautifulSoup ...
- python 爬虫&爬取豆瓣电影top250
爬取豆瓣电影top250from urllib.request import * #导入所有的request,urllib相当于一个文件夹,用到它里面的方法requestfrom lxml impor ...
- scrapy爬虫框架教程(二)-- 爬取豆瓣电影TOP250
scrapy爬虫框架教程(二)-- 爬取豆瓣电影TOP250 前言 经过上一篇教程我们已经大致了解了Scrapy的基本情况,并写了一个简单的小demo.这次我会以爬取豆瓣电影TOP250为例进一步为大 ...
- 一起学爬虫——通过爬取豆瓣电影top250学习requests库的使用
学习一门技术最快的方式是做项目,在做项目的过程中对相关的技术查漏补缺. 本文通过爬取豆瓣top250电影学习python requests的使用. 1.准备工作 在pycharm中安装request库 ...
- Scrapy中用xpath/css爬取豆瓣电影Top250:解决403HTTP status code is not handled or not allowed
好吧,我又开始折腾豆瓣电影top250了,只是想试试各种方法,看看哪一种的方法效率是最好的,一直进行到这一步才知道 scrapy的强大,尤其是和selector结合之后,速度飞起.... 下面我就采用 ...
- urllib+BeautifulSoup无登录模式爬取豆瓣电影Top250
对于简单的爬虫任务,尤其对于初学者,urllib+BeautifulSoup足以满足大部分的任务. 1.urllib是Python3自带的库,不需要安装,但是BeautifulSoup却是需要安装的. ...
随机推荐
- Flex Socket与Java通信实例说明(转)
Flex Socket与Java通信实例说明(转) 这两天一直在flex的Socket ,现在终于懂了很多.由浅到深一步一步深入.慢慢体会实例,虽然实例都是在网上找的,但也经过了我的测试.我比较喜欢注 ...
- Fiddler实战之拟2G、3G、4G网络进行弱网测试
至于fidder网络代理设置就不多说了 模拟网速: 1.启动Fiddler,打开菜单栏Rules---Performances---Simulate Modem Speeds这里打开了模拟调节速度 2 ...
- 路径跟踪 PathMeasure的简单使用
平时用path画一些简单的几何图形,呈现的时候也是已经绘制好的图形,想想,如果像动画一样看到它的绘制轨迹,是不是更酷?今天介绍的这个类PathMeasure就是干这个的,知道它的存在还是由于看了启舰写 ...
- threejs点击事件
示例浏览地址:https://ithanmang.gitee.io/threejs/home/201807/20180703/02-raycasterDemo.html 双击鼠标左键选中模型并显示信息 ...
- Web三维编程入门总结之二:面向对象的基础Web3D框架
本篇主要通过分析Tony Parisi的sim.js库(原版代码托管于:https://github.com/tparisi/WebGLBook/tree/master/sim),总结基础Web3D框 ...
- Python 应用领域及学习重点
笔者认为不管学习什么编程语言,首先要知道:学完之后在未来能做些什么? 本文将浅谈 Python 的应用领域及其在对应领域的学习重点.也仅是介绍了 Python 应用领域的"冰山一角" ...
- F - What Is Your Grade?
“Point, point, life of student!” This is a ballad(歌谣)well known in colleges, and you must care about ...
- OkHttp 优雅封装 HttpUtils 之 上传下载解密
曾经在代码里放荡不羁,如今在博文中日夜兼行,只为今天与你分享成果.如果觉得本文有用,记得关注我,我将带给你更多. 还没看过第一篇文章的欢迎移步:OkHttp 优雅封装 HttpUtils 之气海雪山初 ...
- 前端日期时间处理建议使用Momen
使用方法 下载: http://momentjs.cn/downloads/moment.js 多语言版本:http://momentjs.cn/downloads/moment-with-local ...
- 2019-2020-1 20199329《Linux内核原理与分析》第八周作业
<Linux内核原理与分析>第八周作业 一.本周内容概述: 理解编译链接的过程和ELF可执行文件格式 编程练习动态链接库的两种使用方式 使用gdb跟踪分析一个execve系统调用内核处理函 ...