最近的原則就是把以前爬蟲爬到一半出現各種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年,當 大資料 概念的提出,戶外決策 大資料理念初步形成。在艾宇先生看來,真正的營銷,包括傳統營銷 戶外廣告 也是可以對...