转载—Python抓取豆瓣电影

简介:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/usr/bin/python
# -*-coding:utf-8-*-
# Python:   2.7
# Program:  爬取豆瓣电影
  
from  bs4  import  BeautifulSoup
import  urllib2, json, random, sys
  
reload (sys)
sys.setdefaultencoding( 'utf-8' )
  
def  get_data(url):
     my_headers  =  [
         'Mozilla/5.0 (Windows NT 5.2) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30' ,
         'Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0' ,
         'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET4.0E; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C)' ,
         'Opera/9.80 (Windows NT 5.1; U; zh-cn) Presto/2.9.168 Version/11.50' ,
         'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1' ,
         'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET4.0E; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C)' ]
     header  =  { "User-Agent" : random.choice(my_headers)}
     req  =  urllib2.Request(url, headers = header)
     html  =  urllib2.urlopen(req).read()
     data  =  json.loads(html)[ 'data' ]
     return  data
  
def  get_movieInfo(url):
     my_headers  =  [
         'Mozilla/5.0 (Windows NT 5.2) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30' ,
         'Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0' ,
         'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET4.0E; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C)' ,
         'Opera/9.80 (Windows NT 5.1; U; zh-cn) Presto/2.9.168 Version/11.50' ,
         'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1' ,
         'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET4.0E; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C)' ]
     header  =  { "User-Agent" : random.choice(my_headers)}
     req  =  urllib2.Request(url, headers = header)
     html  =  urllib2.urlopen(req).read()
     soup  =  BeautifulSoup(html,  'html.parser' )
     movie  =  {}
     movie[ 'Name' =  soup.find( 'span' , property = "v:itemreviewed" ).text
     movie[ 'Year' =  soup.find( 'span' , class_ = 'year' ).text
     movie[ 'Rate' =  soup.find( 'strong' property = "v:average" ).text
     movie[ 'Runtime' =  soup.find( 'span' property = "v:runtime" ).text
     movie[ 'Summary' =  soup.find( 'span' property = 'v:summary' ).text
     movie[ 'URL' =  url
  
     movie[ 'Directors' =  ''
     directors  =  soup.find_all( 'a' , rel = "v:directedBy" )
     for  director  in  directors:
         movie[ 'Directors' + =  director.text
         movie[ 'Directors' + =  '  '
  
     movie[ 'Stars' =  ''
     stars  =  soup.find_all( 'a' , rel = "v:starring" )
     for  star  in  stars:
         movie[ 'Stars' + =  star.text
         movie[ 'Stars' + =  '  '
  
     movie[ 'Category' =  ''
     categorys  =  soup.find_all( 'span' property = "v:genre" )
     for  category  in  categorys:
         movie[ 'Category' + =  category.text
         movie[ 'Category' + =  '  '
  
     return  movie
  
def  get_urls():
     base_url  =  'https://movie.douban.com/j/new_search_subjects?sort=R&range=1,10&tags=%E7%94%B5%E5%BD%B1&start='
     urls = []
     nu  =  0
     while  True :
         print  nu
         url  =  base_url  +  str (nu)
         data  =  get_data(url)
         if  len (data)  = =  0 :
             break
         for  in  data:
             urls.append(i[ 'url' ])
         nu  + =  20
     return  urls
  
if  __name__  = =  '__main__' :
     urls  =  get_urls()
     =  open ( 'movieinfo.txt' , 'w+' )
     for  url  in  urls:
         try :
             movie  =  get_movieInfo(url)
             movie_str  =  json.dumps(movie,ensure_ascii = False , encoding = 'UTF-8' )
             f.write(movie_str)
             f.write( '\n' )
             f.flush()
         except :
             print  url
             continue
     f.close()









本文转自 huangzp168 51CTO博客,原文链接:http://blog.51cto.com/huangzp/2073841,如需转载请自行联系原作者
目录
相关文章
|
6月前
|
数据采集 数据可视化 关系型数据库
基于python大数据的电影数据可视化分析系统
电影分析与可视化平台顺应电影产业数字化趋势,整合大数据处理、人工智能与Web技术,实现电影数据的采集、分析与可视化展示。平台支持票房、评分、观众行为等多维度分析,助力行业洞察与决策,同时提供互动界面,增强观众对电影文化的理解。技术上依托Python、MySQL、Flask、HTML等构建,融合数据采集与AI分析,提升电影行业的数据应用能力。
|
7月前
|
数据采集 存储 JSON
地区电影市场分析:用Python爬虫抓取猫眼/灯塔专业版各地区票房
地区电影市场分析:用Python爬虫抓取猫眼/灯塔专业版各地区票房
|
10月前
|
数据采集 Web App开发 JavaScript
基于Selenium的Python爬虫抓取动态App图片
基于Selenium的Python爬虫抓取动态App图片
765 68
|
7月前
|
数据采集 存储 XML
Python爬虫XPath实战:电商商品ID的精准抓取策略
Python爬虫XPath实战:电商商品ID的精准抓取策略
|
10月前
|
数据采集 存储 前端开发
Python爬虫自动化:批量抓取网页中的A链接
Python爬虫自动化:批量抓取网页中的A链接
|
10月前
|
数据采集 Web App开发 前端开发
Python+Selenium爬虫:豆瓣登录反反爬策略解析
Python+Selenium爬虫:豆瓣登录反反爬策略解析
|
10月前
|
JSON API 数据格式
手把手教你抓取京东商品评论:API 接口解析与 Python 实战
京东商品评论蕴含用户对产品质量、体验和服务的真实反馈,分析这些数据有助于企业优化产品和满足用户需求。由于京东未提供官方API,需通过逆向工程获取评论数据。其主要接口为“商品评论列表接口”,支持按商品ID、评分、排序方式等参数获取评论,返回JSON格式数据,包含评论列表、摘要(如好评率)及热门标签等信息。
|
11月前
|
数据采集 存储 缓存
Python爬虫与代理IP:高效抓取数据的实战指南
在数据驱动的时代,网络爬虫是获取信息的重要工具。本文详解如何用Python结合代理IP抓取数据:从基础概念(爬虫原理与代理作用)到环境搭建(核心库与代理选择),再到实战步骤(单线程、多线程及Scrapy框架应用)。同时探讨反爬策略、数据处理与存储,并强调伦理与法律边界。最后分享性能优化技巧,助您高效抓取公开数据,实现技术与伦理的平衡。
526 4
|
11月前
|
数据采集 JSON API
Python 实战:用 API 接口批量抓取小红书笔记评论,解锁数据采集新姿势
小红书作为社交电商的重要平台,其笔记评论蕴含丰富市场洞察与用户反馈。本文介绍的小红书笔记评论API,可获取指定笔记的评论详情(如内容、点赞数等),支持分页与身份认证。开发者可通过HTTP请求提取数据,以JSON格式返回。附Python调用示例代码,帮助快速上手分析用户互动数据,优化品牌策略与用户体验。
1990 3

推荐镜像

更多