第三隻爬蟲 豆瓣影評

2021-07-31 08:26:53 字數 3395 閱讀 4320

最近的原則就是把以前爬蟲爬到一半出現各種bug,導致爬不下去的**全部清理掉,第三隻豆瓣爬蟲來了,主要爬了豆瓣的熱門影評內容,部分**寫的不是特別的簡潔,現階段主要是為了掌握各種方法,後期再進一步完善,希望有看到的小夥伴能夠幫忙指正。

爬取影評詳情鏈結時用到的方法,層層獲取到內容,其次是影評的內容要鏈結到影片詳情的鏈結,也就是跳轉到另乙個頁面去爬取,最重要的一點我還沒有解決,在爬取部分影評的時候,遇到的需要登入才能訪問,需要模擬登陸,這一點還沒攻破,假期結束主要學習動態頁面的爬蟲和模擬登陸,小白成長中,加油!

import urllib

from urllib.request import urlopen

from bs4 import beautifulsoup

import os

import csv

import re

import time

import urllib.error

#定義豆瓣影評爬蟲類

class dbyp():

def __init__(self):

self.baseurl=baseurl

self.pagenum=0

#得到指定頁面全部內容

def askurl(self,url):

request=urllib.request.request(url)

try:

response=urllib.request.urlopen(request)

html=response.read().decode('utf-8')

return html

except urllib.error.urlerror as e:

if hasattr(e,'reason'):

print(u'連線影片詳情頁面失敗,原因:',e.reason)

return none

#傳入某一頁索引,獲取頁面**

def getpage(self,pagenum):

try:

url=baseurl+str(pagenum)

request=urllib.request.request(url)

response=urllib.request.urlopen(request)

html=response.read().decode('utf-8')

# print(html)

return html

except urllib.error.urlerror as e:

if hasattr(e,'reason'):

print(u'連線豆瓣影評失敗,原因:',e.reason)

return none

#使用beautifulsoup方法爬取頁面所要獲取的內容

def getpageinfo(self,pagenum,html):

bs=beautifulsoup(html,'lxml')

content_field=bs.select('header.main-hd')

# print(content_field)

item=

for each in content_field:

title=each.select('a.title-link')[0]

href = each.find_all('h3', )[0].find_all('a')[0]#一層一層的獲取到內容,最後href[href]提取出鏈結中的內容

url = href['href'] # 影片詳情鏈結

# print(url)

author = each.select('a > span')[0]

subject_title = each.select('a.subject-title')[0]

rate = each.select('span.main-title-hide')[0]

pattern =self.askurl(url) # 獲取影片詳情的html

html = beautifulsoup(pattern, 'lxml') # 解析html檔案

content = html.select('div.review-content')[0]

print(content.text)

# desc = re.sub(remove '', str(content)) # 去掉標籤

date = each.select('span.main-meta')[0]

time.sleep(2)

# print(item)

return item

#將檔案儲存為csv格式

def write_data(self,contents):

csvfile=open('film_review.csv','a',newline='',encoding='utf-8')

writer=csv.writer(csvfile)

writer.writerow(('標題','影評詳情鏈結','影評人','影片名','評分/5','影評','日期'))

for item in contents:

writer.writerow(item)

csvfile.close()

#刪除已有檔案

def deleteoldtxt(self):

filename='film_review.csv'

if os.path.exists(filename):

os.remove(filename)

print('發現舊名單,已刪除')

#設定頁數,訪問資料

def start(self):

print('正在讀取熱門影評:')

indexpage=self.getpage(0)

try:

for i in range(0,100,20):

print('正在讀取第'+str(i)+'頁的內容:')

page=self.getpage(i)

html=spider.getpage(i)

contents=self.getpageinfo(page,html)

print(contents)

self.write_data(contents)

time.sleep(2)

except ioerror as e:

print('寫入異常,原因:'+ e.message)

finally:

print('寫入任務完成')

baseurl=''

spider=dbyp()

spider.deleteoldtxt()

spider.start()

貼出來的**,現在用是沒有問題的,但是涉及到有的網頁需要登入才能爬取,所以後期對於模擬登陸這一part需要進一步完善

第三隻貓進門

在把小灰接回來之前,就連救助人都曾勸告過我,說乙個人帶兩隻貓就差不多了,帶三隻會很辛苦。我說不怕,不就是多吃點糧食多鏟點貓屎嗎?事實證明,流浪貓的寄養工作並不都那麼好做。小灰是花咪10月14日左右發現的,當時它在北窪路一帶,和另外幾隻流浪貓生活在一起。從看到小灰的第一眼起,我就為它牽腸掛肚,這麼漂亮...

如何用好企業管理的「第三隻眼睛」

人類的一切活動,都可以轉化成單位數量來進行計量,從而來衡量活動有效程度。對於企業管理來說,資料便是衡量其有效性最直觀的形式之一。大資料時代的風起雲湧,將這種直觀的表達形式推到了 風尖浪口 滲透到企業管理從財務核算,到研發 採購 生產 物流 營銷 質量 人力資源管理等各個方面領域,儼然成為了企業管理的...

專訪 戶外決策將成為您的第三隻眼睛 艾宇

人物檔案 艾宇 70後,畢業於西安美術學院 2001年,擔任北京時空港科技 2003年港股上市企業 西安總經理。2005年,與長安大學教授李曙光聯合創辦 西安鼎城數碼科技 2012年,當 大資料 概念的提出,戶外決策 大資料理念初步形成。在艾宇先生看來,真正的營銷,包括傳統營銷 戶外廣告 也是可以對...