转载—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,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
存储 缓存 Python
如何使用Python抓取PDF文件并自动下载到本地
如何使用Python抓取PDF文件并自动下载到本地
34 0
|
3月前
|
数据采集 前端开发 JavaScript
利用 Python 抓取数据探索汽车市场趋势
利用 Python 抓取数据探索汽车市场趋势
|
3月前
|
数据采集 数据可视化 数据挖掘
Python爬虫实战:抓取网站数据并生成报表
本文将介绍如何使用Python编写简单而高效的网络爬虫,从指定的网站上抓取数据,并利用数据分析库生成可视化报表。通过学习本文内容,读者将能够掌握基本的爬虫技术和数据处理方法,为日后开发更复杂的数据采集与分析工具打下坚实基础。
|
3月前
|
数据采集 数据可视化 IDE
用Python获得电影数据并可视化分析
用Python获得电影数据并可视化分析
43 0
|
3月前
|
数据采集 JSON JavaScript
Python爬虫案例:抓取猫眼电影排行榜
python爬取猫眼电影排行榜数据分析,实战。(正则表达式,xpath,beautifulsoup)【2月更文挑战第11天】
71 2
Python爬虫案例:抓取猫眼电影排行榜
|
11天前
|
Python
使用Python的Requests库进行网络请求和抓取网页数据
【4月更文挑战第20天】使用Python Requests库进行网络请求和网页数据抓取的步骤包括:安装库(`pip install requests`)、导入库、发送GET/POST请求、检查响应状态码、解析内容、处理Cookies、设置请求头以及异常处理。通过`response`对象访问响应信息,如`status_code`、`text`、`content`和`cookies`。可设置`headers`模拟用户代理,用`try-except`处理异常。
19 7
|
12天前
|
Python
如何使用Python的Requests库进行网络请求和抓取网页数据?
【4月更文挑战第19天】使用Python Requests库进行网络请求和网页数据抓取:安装库,导入requests,发送GET/POST请求,检查状态码(如`status_code==200`表示成功),解析响应内容(如`response.text`),处理Cookies和请求头,以及用try-except捕获异常。更多功能可深入学习Requests库。
10 2
|
18天前
|
开发者 索引 Python
实践:如何使用python在网页的表格里抓取信息
实践:如何使用python在网页的表格里抓取信息
|
18天前
|
数据采集 JSON 网络协议
「Python系列」Python urllib库(操作网页URL对网页的内容进行抓取处理)
`urllib` 是 Python 的一个标准库,用于打开和读取 URLs。它提供了一组模块,允许你以编程方式从网络获取数据,如网页内容、文件等。
36 0
|
23天前
|
人工智能 机器人 数据挖掘
【python】电影评分数据集的分析(python实现)(源码+报告)【独一无二】
【python】电影评分数据集的分析(python实现)(源码+报告)【独一无二】