【Python】从0开始写爬虫——转身扒豆瓣电影

豆瓣就比较符合这个“明人不说暗话”的原则。所以我们扒豆瓣,不多说,直接上代码

from scrapy import app
import re

header = {
    ‘User-Agent‘:
        ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36‘,
    ‘Host‘: ‘movie.douban.com‘,
    ‘Accept-Language‘: ‘zh-CN,zh;q=0.9‘
}

movie_url = "https://movie.douban.com/subject/26985127/?from=showing"

m_id = re.search("[0-9]+", movie_url).group()

# 获取soup对象
soup = app.get_soup(url=movie_url, headers=header, charset="utf-8")
content = soup.find(id="content")

# 抓取电影名字和上映年份
m_name = content.find("h1").find("span").string
m_year = content.find(class_="year").string

# 抓取导演
info = content.find(id="info")
m_directer = info.find(attrs={"rel": "v:directedBy"}).string
# 上映日期
m_date = info.find(attrs={"property": "v:initialReleaseDate"}).string

# 类型
types = info.find_all(attrs={"property": "v:genre"}, limit=2)
m_types = []
for type_ in types:
    m_types.append(type_.string)

# 抓取主演,只取前面五个
actors = info.find(class_="actor").find_all(attrs={"rel": "v:starring"}, limit=5)
m_actors = []
for actor in actors:
    m_actors.append(actor.string)

# 片长
m_time = info.find(attrs={"property": "v:runtime"}).string
# m_adaptor = info.select()

print("id", m_id, "名称", m_name, "年份 ", m_year, "导演 ", m_directer, "主演", m_actors)
print("上映日期", m_date, "类型", m_types, "片长", m_time)

输出:

id 26985127 名称 一出好戏 年份  (2018) 导演  黄渤 主演 [‘黄渤‘, ‘舒淇‘, ‘王宝强‘, ‘张艺兴‘, ‘于和伟‘]
上映日期 2018-08-10(中国大陆) 类型 [‘剧情‘, ‘喜剧‘] 片长 134分钟

简单粗暴

原文地址:https://www.cnblogs.com/yeyeck/p/9484882.html

时间: 2024-11-06 03:48:32

【Python】从0开始写爬虫——转身扒豆瓣电影的相关文章

【Python】从0开始写爬虫——把扒到的豆瓣数据存储到数据库

1. 我们扒到了什么? id, 名称, 上映年份,上映日期,所属类目, 导演,主演,片长,评分,星评,评价人数 2. 把这些数据做一个分类. a..基本信息 :名称, 导演,上映年份, 所属类目, 片长 b.评价信息:评分,星评,评价人数 c.主演表: 主演(我在纠结要不要单独列一张表) 3 .表设计.现在有点蛋疼的是主键.用自增主键还是电影id做主键.经过我的多方面考虑,我慎重(草率)地决定,用电影id(反正都要建唯一索引,为什么不拿来当主键呢..), 所以我刚才又在id那转了一下数据 m_i

【Python】从0开始写爬虫——豆瓣电影

1. 最近略忙..java在搞soap,之前是用工具自动生成代码的.最近可能会写一个soap的java调用 2. 这个豆瓣电影的爬虫.扒信息的部分暂时先做到这了.扒到的信息如下 from scrapy import app import re header = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safar

Python小爬虫——抓取豆瓣电影Top250数据

写LeetCode太累了,偶尔练习一下Python,写个小爬虫玩一玩~ 确定URL格式 先找到豆瓣电影TOP250任意一页URL地址的格式,如第一页为:https://movie.douban.com/top250?start=0&filter=,分析该地址: https:// 代表资源传输协议使用https协议: movie.douban.com/top250 是豆瓣的二级域名,指向豆瓣服务器: /top250 是服务器的某个资源: start=0&filter= 是该URL的两个参数,

Python爬虫爬取豆瓣电影名称和链接,分别存入txt,excel和数据库

前提条件是python操作excel和数据库的环境配置是完整的,这个需要在python中安装导入相关依赖包: 实现的具体代码如下: #!/usr/bin/python# -*- coding: utf-8 -*- import urllibimport urllib2import sysimport reimport sslimport openpyxlimport MySQLdbimport time #from bs4 import BeautifulSoup #修改系统默认编码为utf-8

python爬虫练习1:豆瓣电影TOP250

项目1:实现豆瓣电影TOP250标题爬取: 1 from urllib.request import urlopen 2 from bs4 import BeautifulSoup 3 import re 4 5 class doubanSpider(): 6 def __init__(self): 7 """ 8 初始化, 9 页码,URL,存储数据, 10 """ 11 self.page = 0; 12 # "http://mov

Scrapy安装、爬虫入门教程、爬虫实例(豆瓣电影爬虫)

Scrapy在window上的安装教程见下面的链接:Scrapy安装教程 上述安装教程已实践,可行.本来打算在ubuntu上安装Scrapy的,但是Ubuntu 磁盘空间太少了,还没扩展磁盘空间,暂时不想再上面装太多软件. Scrapy的入门教程见下面链接:Scrapy入门教程 上面的入门教程是很基础的,先跟着作者走一遍,要动起来哟,不要只是阅读上面的那篇入门教程,下面我简单总结一下Scrapy爬虫过程: 1.在Item中定义自己要抓取的数据: movie_name就像是字典中的“键”,爬到的数

用Scrapy爬虫爬取豆瓣电影排行榜数据,存储到Mongodb数据库

爬虫第一步:新建项目 选择合适的位置,执行命令:scrapy startproje xxxx(我的项目名:douban) 爬虫第二步:明确目标 豆瓣电影排行url:https://movie.douban.com/top250?start=0, 分析url后发现srart=后面的数字,以25的步长递增,最大为225,所以可以利用这个条件来发Request请求 本文只取了三个字段,电影名.评分和介绍,当然你想去更多信息也是可以的 item["name"]:电影名 item["r

【Python】从0开始写爬虫——开发环境

python小白,稍微看了点语法而已, 连字典的切片都永不顺的那种.本身是写java的,其实java也写得菜, 每天下了班不是太想写java.所以下班总是乱搞,什么都涉猎一点,也没什么太实际的收获.现在打算慢慢写个python爬虫玩 1. python环境搭建.我在windows上也是搭了python环境的,很久了.但是这个我在windows用pip安装的第三方库用起来总是报错.所以我一般都不用.我时用pycharm的python环境的. 在pycharm上安装需要的包,新建项目后,在左上角 F

python爬虫爬取豆瓣电影前250名电影及评分(requests+pyquery)

写了两个版本: 1.面向过程版本: import requests from pyquery import PyQuery as pq url='https://movie.douban.com/top250' moves=[] def sec(item): return item[1] for i in range(0,255,25): content=requests.get(url+"?start="+str(i))#?start=25 for movie in pq(conte