網(wǎng)絡空間安全概論 實驗7網(wǎng)絡爬蟲 豆瓣電影榜單的爬蟲_第1頁
網(wǎng)絡空間安全概論 實驗7網(wǎng)絡爬蟲 豆瓣電影榜單的爬蟲_第2頁
網(wǎng)絡空間安全概論 實驗7網(wǎng)絡爬蟲 豆瓣電影榜單的爬蟲_第3頁
網(wǎng)絡空間安全概論 實驗7網(wǎng)絡爬蟲 豆瓣電影榜單的爬蟲_第4頁
網(wǎng)絡空間安全概論 實驗7網(wǎng)絡爬蟲 豆瓣電影榜單的爬蟲_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

中國礦業(yè)大學計算機學院

且L級本科生課程報告

課程名稱信息內(nèi)容安全

報告題目豆瓣電影熱門榜單的爬蟲

報告時間202263()

姓名鐘昌甫

學號08193050_________

任課教師曹天杰_________

2021-2022(-)《信息內(nèi)容安全》評分表

試題類型

考核類別考核內(nèi)容支撐課程目標與分值比分數(shù)

目標3:掌握信息內(nèi)容安仝的基礎知識,

課程報告(論文針對具體問題和要求選擇正確的技術路

課程報告,

結(jié)課考核綜述、設計、實線,通過在實驗環(huán)境中進行仿真實驗并能

100%

現(xiàn)、寫作規(guī)范)根據(jù)算法特點進行攻擊測試和綜合性能

評價,得到具有參考價值的結(jié)論。

目標1:掌握信息內(nèi)容安全的基本概念、

分類、原理和相關技術,能夠根據(jù)課程基系統(tǒng)演示

1.基本概念、原

本知識對信息內(nèi)容安全領域出現(xiàn)的問題及解說,

進行歸類、分析、并有初步分析和解決問30%

題的能力。

目標2:掌握信息內(nèi)容安全處理相關的理

PPT講解

過程考核2.系統(tǒng)設計與論、技術以及健全的評價體系,能夠根據(jù)

與答辯,

分析具體問題分析算法、設計算法、實現(xiàn)算法

50%

并能綜合評價算法。

3.基本概念、作業(yè)或測

目標1

原理試,20%

過程考核:

結(jié)課考核與過程考核比例結(jié)課考核:60%

40%

評閱人:

2022年7月10日

報告摘要

關鍵詞:爬蟲即網(wǎng)絡爬蟲,是一種自動獲取網(wǎng)頁內(nèi)容的程序。是搜索引

擎的重要組成部分,因此搜索引擎優(yōu)化很大程度上就是針對爬蟲而做出

的優(yōu)化。爬取豆瓣電影的熱門榜,獲取熱門榜信息并生成excel文件實現(xiàn)

數(shù)據(jù)可視化

下面我們就使用requests和xpath來爬取豆瓣電影中的“電影名”、“導演”、

“演員”、“評分”等信息。

爬蟲前python環(huán)境的安裝:

打開cmd,輸入以下指令:

pipinstallrequests

pipinstallIxml

豆瓣網(wǎng)未登陸的情況卜無法采集數(shù)據(jù),requests.get會返回418,418的

意思是被網(wǎng)站的反爬程序識別返回的結(jié)果,所以采集之前要先登錄網(wǎng)站,

并且復制網(wǎng)站的User-Agent和Cookie信息,并且把User-Agent和

Cookie轉(zhuǎn)化為字典格式,網(wǎng)頁鼠標右鍵——檢查

------NetworkDoc------F5刷新網(wǎng)址(這步很重要)選擇Name下

面的4top250?start=0&filter=,------Headers------Cookie,User-Agent1位

于cookie下面)

基礎班代碼(備注都已表明):fromfileinputimportfilename

importjson

importrequests

importpandas

frombs4importBeautifulSoup

#網(wǎng)址

url=r/j/new_search_subjects?sort=U&range=OJO&

tags=&start=O'

#導航

header={'User-Agent':'Mozina/5.0(Windov/sNT10.0;Win64;x64)

AppleWebKit/537.36(KHTML,likeGecko)Chrome/102.0.5005.124

Safari/537.36Edg/102.0.1245.44')

#目的地

response=requests.get(url=url,headers=header)

#獲取網(wǎng)頁源代碼

baoxian=response.text

#轉(zhuǎn)變數(shù)據(jù),將數(shù)據(jù)進行分層

datal=json.loads(baoxian)

#電影的數(shù)量

num=len(data1['data'])

#設置表頭以及規(guī)格

tou=['directors',,rate,,'title','url1]

guige=pandas.DataFrame(index=range(num),cohimns=tou)

foriinrange(num):

guige.loc[i,directors']=data1「data'][i]「directors']

guige.loc[i,'rate']=data1['data'][i]['rate']

guige.locti/tille^data1['data1][i]['title']

guige.loc[i;urr]=datal['data'][i]['urr]

filename-I.xlsx

guige.to_excel(filename)

由于本段代碼需要人為手動獲取每個頁面的User-Agent和Cookie信息,

故優(yōu)化代碼,通過觀察可以看出,豆瓣電影top250榜單總共有10個頁

面,每個頁面有25部電影,總共250部電影。并且,這10個頁面的網(wǎng)

址有一定的規(guī)律性,那就是網(wǎng)址中的start位置,第1個頁面start=(),第

2個頁面start=25,第10個頁面start=225,可以推測出這10個頁面的

網(wǎng)址中的start呈現(xiàn)出[0,25,50,75,100,125,150,175,200,225]的序列分

布規(guī)律。于是可以通過python循環(huán)自動生成10個網(wǎng)址,并且把10個網(wǎng)

址存放在列表中。代碼如下(備注已標注):

#導入庫

iiiipoilrequests

frombs4importBeautifulSoup

importtime

importpandasaspd

fromdatetimeimportdate

#定義函數(shù),用來處理User-Agent和Cookie

defua_ck():

III

網(wǎng)站需要登錄才能采集,需要從Network-Doc里復制User-Agent

和Cookie,Cookie要轉(zhuǎn)化為字典

user_agent={

'User-Age”:'Mozilla/5.0(WindowsNT10.0;Win64;x64)

AppleWebKit/537.36(KHTML,likeGecko)Chrome/85.0.4183.102

Safari/537.36,)

cookies='11="118202";bid=FsStcocWuPQ;

_vwo_uuid_v2=D65179C81F8EE8041E5F8605041534542|e1ed6add019a5c

f6cdb06398640e7fe6;gr_user_id=43e3a769-fflc-4abe-b1c3-f7d5b28082de;

douban-fav-remind=1;push_doumail_num=0;douban-profile-remind=I;

viewed=M26870407_20438158_10799082_3C43970_35174681_26929955_3

932365一26886337_27667378_33419041

_pk_ref.l00001.4cf6=%5B%22%22%2C%22%22%2C1600420934%2C%22

https%3A%2F%2F%2Flink%3FurI%3DuCRtekAbCAhUknI

Q9g23ZVQuuGcvpkHuD4DlXS-dKKFXIpgjJwlSGuJm_tBya8dT%26wd%3

D%26eqid%3Dc67bc9250001c8ee000000055f647c42%22%5D;

_pk_ses.1000()1.4cf6=*;

—utmz=30149280.1600420934.91.83.utmcsr=baidu|utmccn=(organic)|utmc

md=organic;

_utma=30149280.1986063068.1597310055.1600241651.1600420934.91;

_utmc=30149280;_utmb=223695600420934;

_utma=223695111.1305332624.1597310055.1600228709.16()0420934.50;

—ulniz-223695111.1600420934.50.45.uliii(;M-baidu|uliiK;cii-(orgaiiic)|ulinc

md=organic;_utmc=223695111;ap_v=0,6.0;

dbc!2=nl77996890:FXynNkgIDSMH;ck=5mGV;_utmt=1;

_utmv=30149280.17799;_utmb=301492600420934;

push_noty_num=0;

_pk_id.l00001.4cf6=991c66698d6e616d.i597310055.50.1600420993.16002

287087

#Cookie轉(zhuǎn)化為字典

cookies=cookies.split(';')

cookies_dict={)

foriincookies:

cookies_dict[i.split(,=*)[0]]=i.split('=')[l]

returnuser_agent,cookies_dict

#定義函數(shù),用于獲取豆瓣top250每一個頁面的網(wǎng)址

defget_urls(n):

111

n:頁面數(shù)量

?n

urls=[]#用于存放網(wǎng)址

num=(11-1)*25+1

foriinrange(0,num,25):

url='/top250?start={}&filter=,.formai(i)

urls.append(url)

returnurls

#定義函數(shù),獲取每個頁面25部電影的鏈接

defgct_movics_url(url,u_a,c_d):

III

url:每一個頁面的鏈接

u_a:User-Agent

c_d:cookies

III

html=requests.get(url,

headers二u_a,#加載User-Agent

cookies=c_d)#力口載cookie

html.encoding=html.apparent_encoding#解決亂碼的萬金油方法

ifhtml.status_code==200:

print('網(wǎng)頁訪問成功,KR:{}\n'.format(html.status_code))

soup=BeautifulSoup(html.text,'html.parser')#用html.parser來解

析網(wǎng)頁

items=soup.find('or,class_='grid_view').find_all('li')

movies_url=[]

foriteminitems:

#電影鏈接

movie_href=item.find('div,,class_='hd').find(,a')['href]

movies_url.append(movie_href)

returnmovies_url

time.sleep(0.4)#設置時間間隔,0.4秒采集一次,避免頻繁登錄

網(wǎng)頁

#定義函數(shù),獲取每一部電影的詳細信息

defget_movie_info(href,u_a,c_d):

href:每一部電影的鏈接

u_a:User-Agent

c_d:cookies

IM

html=requests.get(href,

hcaders=u_a,

cookies=c_d)

soup=BeautifulSoup(html.text,'htmLparser')#用html.parser來解

析網(wǎng)頁

item=soup.find('div\id='content')

movie={}#新建字典,存放電影信息

#電影名稱

movie「電影名稱']=item.hl.span.text

#導演、類型、制片國家/地區(qū)、語言、上映時間、片長(部分電影

這些信息不全,先全部采集,留待數(shù)據(jù)分析時處理)

movie['電影其他信息口=item.find(

'div:id-info').text.rcplaceC*,'^.splitC^n')

foriinmovie「電影其他信息]:

if':'ini:

movie[i.split(,:,)[0]]=i.split(':')ll]

else:

continue

#豆瓣評分、評分人數(shù)

movie『評分']=item.find('div\id='interest_sectr).find(

'div',class_=*rating_selfclearfix').find('strong',class_=,ll

rating_num').text

movie['評分人數(shù)']=item.find(*div',id-interest_sectr).find('div',

class_='rating_selfclearfix').find(

'div',class_-rating_sum').findCspan',property-v:votes').text

#電影獲獎情況

returnmovie

tim已sleep(0.4)#0.4秒采集一次,避免頻繁登錄網(wǎng)頁

#設置主函數(shù),運行上面設置好的函數(shù)

defmain():

?II

n:頁面數(shù)量,總共有10個頁面

u_a:User-Agent

c_d:cookies

n=10#頁面數(shù)量,總共有10個頁面

printC開始采集數(shù)據(jù),預計耗時2分鐘)

#處理User-Agent和Cookie

login=ua_ck()

u_a=login|0]

c_d=login|ll

#獲取豆瓣lop250每一頁的鏈接

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論