2-2 用Python爬取銀河演員網上的演員參演電影的信息進行抓取

腳本中用到的actors_use.csv為之前從豆瓣上抓取的演員列表。

 1 galaxyactors.py
 2 # -*- coding: utf-8 -*-
 3 #該腳本可以按照文件actors_use.csv中給出的演員的姓名
 4 #對銀河演員網http://www.8fkd.com/上的演員參演電影的信息進行抓取
 5 #信息包括演員參演電影和電影日期,參演電影數量,和演員出道年份
 6 import requests
 7 import time
 8 import lxml.html
 9 import re
10 from pandas import DataFrame
11 import pandas as pd
12 import random
13 
14 headers = {"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36'}
15 def getDoc(url):
16     resp=requests.get(url,headers=headers)  #得到網頁響應
17     time.sleep(0.1)   #暫停0.1秒,防止抓取太頻繁被封IP
18     content=resp.text  #獲取相應內容
19     doc = lxml.html.fromstring(content)  #得到xml格式的文本
20     return doc
21 
22 def getInfo(url):
23     doc=getDoc(url)  #得到xml格式的文本
24     #得到演員演過的電影列表
25     temp1=doc.xpath('//*[@id="divLeft"]/div/div[2]/div/ul/li[1]/a/text()')
26     #得到演員演過的電影的日期的列表
27     temp2=doc.xpath('//*[@id="divLeft"]/div/div[2]/div/ul/li[2]/text()')
28     #如果抓取到的電影列表不為空
29     if temp1!=[]:
30         actor_m = []  #初始化該演員演過的電影列表
31         actor_d = []  #初始化該演員演過的電影的日期的列表
32         actor_y = []  #初始化該演員演過的電影的年份的列表
33         temp2=temp2[1:]  #由于數據結構的問題,temp2中除去第一項剩下的為電影日期
34         for s in temp1:
35             # print s.encode('utf-8')
36             actor_m.append(s.encode('utf-8'))
37         for s in temp2:
38             # print s.encode('utf-8')
39             actor_d.append(s.encode('utf-8'))
40             # 取每部電影日期字符串的前四項,然后轉換成int數據類型,就是所演電影的年份
41             actor_y.append(int(s.strip()[:4]))
42         # print actor_m
43         # print actor_d
44         # print actor_y
45         startYear=min(actor_y)  #演員出道年份就是演過電影的年份中的最小項
46         movieNum=len(actor_m)  #統計演員演過的電影數量
47         actor_info={'movies':actor_m,'date':actor_d}  #將演員演過的電影和電影的年份生成字典格式數據
48         # print actor_info
49         # print startYear
50         # print movieNum
51         return actor_info,movieNum,startYear  #返回演員演過的電影信息,電影數,出道年份三個數據
52     else:
53         return '-','-','-'  #如果沒有抓取到內容,則三項都返回'-'
54     # print temp3
55     # print chardet.detect(temp[0].encode('utf-8'))
56 
57 df=pd.read_csv('actors_use.csv')
58 infoList = []  #初始化演員參演電影信息列表
59 numList = []  #初始化演員演過電影的數目列表
60 yearList = []  #初始化演員出道年份列表
61 actorList=[]  #初始化演員姓名列表
62 for i in range(0,3566):
63     #演員電影頁網址為'http://yy.8fkd.com/'加演員姓名拼音,加'/DianYing'
64     url='http://yy.8fkd.com/'+str(df.ix[i,'actors_id'])+'/DianYing'
65     try:
66         actor_info,movieNum,startYear=getInfo(url)  #調用getInfo函數
67     except:  #如果出錯,則將三項標記為error
68         actor_info, movieNum, startYear=('error','error','error')
69     finally:
70         #對演員參演電影信息列表、參演電影數列表、出道年份、演員姓名進行數據添加操作
71         infoList.append(actor_info)
72         numList.append(movieNum)
73         yearList.append(startYear)
74         actorList.append(df.ix[i,'leadingRoles'])
75         tempDict={'actors':actorList,'info':infoList,'moviesNum':numList,'startYear':yearList}
76         df1=DataFrame(tempDict)  #將結果數據轉換為DataFrame數據格式
77         df1.to_csv('test.csv',index=False)  #寫入文件
78         print i+1,':',df.ix[i, 'leadingRoles'],'(',movieNum,')'  #打印標記

?

轉載于:https://www.cnblogs.com/PistonType/p/5499059.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/395965.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/395965.shtml
英文地址,請注明出處:http://en.pswp.cn/news/395965.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

在c語言中,以r方式不能打開并不存在的文件,C語言文件選擇題

C語言文件選擇題(答案在最后)1、標準庫函數fgets(s,n,f)的功能是A) 從文件f中讀取長度為n的字符串存入指針s所指的內存B) 從文件f中讀取長度不超過n-1的字符串存入指針s所指的內存C) 從文件f中讀取n個字符串存入指針s所指的內存D) 從文件f中讀取長度為n-1的字符串存入指針s所指…

動腦2017android_您肯定要在2017年初嘗試的25個新Android庫

動腦2017androidby Michal Bialas由Michal Bialas 您肯定要在2017年初試用的25個Android庫 (25 Android libraries you definitely want to try out in early 2017) This is a list of 25 best Android libraries released in January and February 2017. All of these are wo…

linux中安裝多個mysql_liunx系統下安裝多個MySql數據庫并做主從配置

在網上搜索了很多資料,都沒有看到像樣的文檔,思路不是很清晰,對第一次安裝的朋友來說較為困難,經過長時間的安裝嘗試和查詢網上零碎的知識點,終于成功的完成Linux系統下多MySql數據庫安裝和主從配置,現在分…

034_nginx報錯總結

一、nginx: [emerg] "client_header_timeout" directive is not allowed here in /opt/nginx/conf/vhost.d/newton-api.uuwatch.com.conf:24 location / { client_body_timeout 5s;client_header_timeout 3s; #配置參數報錯proxy_set_header X-Forwarded-For …

江蘇省高等學校計算機一級成績查詢,江蘇計算機一級考試成績查詢

想要了解江蘇2020年9月計算機一級考試成績查詢入口的小伙伴快來看看吧!下面由出國留學網小編為你精心準備了“江蘇2020年9月計算機一級考試成績查詢入口公布”,持續關注本站將可以持續獲取更多的考試資訊!江蘇2020年9月計算機一級考試成績查詢…

Linux中mongodb安裝和導出為json

采用官方工具導出mongo數據為json格式 文檔:https://docs.mongodb.com/manual/reference/program/mongoexport/ 可以遠程導出,只要有host:port即可。 首先需要安裝tools: 在redhat中: 文檔:https://docs.mongodb.com/manual/tutor…

《樹莓派實戰秘籍》——1.17 技巧17添加重啟按鈕

本節書摘來異步社區《樹莓派實戰秘籍》一書中的第1章,第1.17節,作者:【美】Ruth Suehle ,Tom Callaway,更多章節內容可以訪問云棲社區“異步社區”公眾號查看 1.17 技巧17添加重啟按鈕 樹莓派實戰秘籍也許你已經注意到Pi缺少了某…

dns是指網絡域名系統_域名系統(DNS)是Internet的骨干。 這就是全部的運作方式。...

dns是指網絡域名系統by Nikolas ODonnell由Nikolas ODonnell 域名系統(DNS)的工作方式以及如何使其變得更好。 (How the Domain Name System (DNS) works and how you can make it better.) The Domain Name System (DNS) is often referred to as the backbone of the intern…

07.敏捷項目管理——推測階段筆記

00.推測階段關注產品很項目——創造和理解產品結構、性能和故事功能清單以及發布計劃。 01.發布計劃會用到與產品規格、平臺結構體系、資源、風險分析、業務約束以及目標進度等信息。 02.迭代計劃和開發方法有兩個至關重要的組成部分——短期迭代時間框和功能。 03.產品經理控制…

mysql臨時關閉索引功能_MySQL優化之索引優化

$1.WHY : 找到MySQL Query執行慢的原因1.1 EXPLAIN通過Explain查看SQL Query語句的執行情況&#xff0c;從中找出導致MySQL查詢性能差的原因EXPLAIN QUERY語句【字段解釋】<1> id -- 表的讀取順序id相同時&#xff0c;按照從上至下的順序執行id不同時&#xff0c;id值越…

Maven實戰. 1.3Maven與極限編程

1.3Maven與極限編程 極限編程&#xff08;XP&#xff09;是近些年在軟件行業紅得發紫的敏捷開發方法&#xff0c;它強調擁抱變化。該軟件開發方法的創始人Kent Beck提出了XP所追求的價值、實施原則和推薦實踐。下面看一下Maven是如何適應XP的。 首先看一下Maven如何幫助XP團隊實…

python 下字符串格式時間比較

python 下有多個有關時間的模塊&#xff0c;分別是time、datetime、calendar&#xff0c;今天重點討論下time寫法。 其中time模塊&#xff0c;主要有以下方法&#xff1a; ltimetime.time() 獲取當前系統時間&#xff0c;返回float型數值時間戳&#xff08;當前時間相對于1970.…

要記住的Facepalm:我在未先測試SDK的情況下對其進行了改進。

by Rahul Chowdhury通過拉胡爾喬杜里 要記住的Facepalm&#xff1a;我在未先測試SDK的情況下對其進行了改進。 (A Facepalm to Remember: I bumped up the version of an SDK without testing it first.) It all started when Google made its App Shortcuts API available fo…

《計算機應用基礎》第三套作業,《計算機應用基礎》第三套試卷和答案.doc

《計算機應用基礎》第三套試卷和答案洼擬酚痕扁亭疵熏瘤頂籌鮮愧禾候拂咨煥挖害騁邑授琳短雨況絮姚話混頸攆陛蠶撅瑟終妝響氫渾啄濃善籮將霞多仇齊眠長逗指臟和親鬧藩蝴班搬囊嫁瀾代閨杠貼漢磁渺禮懦縣謬勤享善跑紙億憑閨倔曳妖掩返狠撰翼蝎聚捌諄累堿膨躬孺癢凸蒂偉熱吊深瀝刑…

K8S Calico

NetworkPolicy是kubernetes對pod的隔離手段&#xff0c;是宿主機上的一系列iptables規則。 Egress 表示出站流量&#xff0c;就是pod作為客戶端訪問外部服務&#xff0c;pod地址作為源地址。策略可以定義目標地址或者目的端口 Ingress 表示入站流量&#xff0c;pod地址和服務作…

前端頁面內含外顯相關知識

頁面顯示&#xff1a; 對于頁面上篩選條件有下拉框加載的&#xff0c;直接下對應顯示時加載 {text : 產品線,dataIndex : entorgid,align : center,width : 150,renderer:function(value,metaData,record ,rowIndex,colIndex,store,view){if(value ! ""){$("#en…

捷克 簽證_一位捷克開發人員構建了可在您的瀏覽器中直接運行的語音合成器

捷克 簽證Here are three links worth your time:這是三個值得您花費時間的鏈接&#xff1a; A Czech developer built this mouth synthesizer that runs right in your browser. Be sure to turn your sound on. (1 minute watch interactive app) 一位捷克開發人員構建了可…

mvc 之 配置EF+oralce

只需要在項目中加載nuGet包就可以了 操作&#xff1a;工具--nuGet包管理器--程序包管理器控制臺 在 PM>處輸入 install-package entityframework 加載sqlserver的數據庫連接 install-package oracle.manageddataaccess.entityframework 加載oracle的數據庫連接 參考地址&…

計算機組裝與維修bios設置,(完整版)計算機組裝與維修模擬試題(BIOS設置的習題).docx...

第十二章BIOS 設置的習題一、問答題、目前 BIOS 的類型主要有哪幾種&#xff1f;、設置 Quick_Power_Self_Test( 快速開機自檢 ) 為什么狀態時&#xff0c;可以加速計算機的啟動&#xff1f;、何謂 _BIOS&#xff1f;、簡述 BIOS 的基本功能。、 BIOS與 CMOS有何區別&#xff1…

從諾克斯維爾的攀巖健身房到舊金山的網絡安全公司

這是三個值得您花費時間的鏈接&#xff1a; (Here are three links worth your time:) How Sean went from working in a Knoxville rock climbing gym to working as a software engineer in a San Francisco cybersecurity startup, through 12 months of intense self-teach…