需要用到的庫有:requests、re、pandas、selenium、lxml。
還要準備chromedriver。安裝教程:
匯入需要的庫
import requests
import re
import pandas as pd
from pandas.core.frame import dataframe
123
4
總之能導的全導進去
from selenium import webdriver
from selenium.webdriver.chrome.options import options
import numpy as np
from lxml.html import fromstring
import time
from random import random
123
456
開啟chromedriver
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import desiredcapabilities
opts = webdriver.chromeoptions()
opts.add_argument(』–no-sandbox』)#解決devtoolsactiveport檔案不存在的報錯
opts.add_argument(『window-size=1920x3000』) #指定瀏覽器解析度
opts.add_argument(』–disable-gpu』) #谷歌文件提到需要加上一這個屬性來規避bug
opts.add_argument(』–hide-scrollbars』) #隱藏滾動條, 應對些特殊頁面
#opts.add_argument(『blink-settings=imagesenabled=false』) #不載入, 提公升速度
#opts.add_argument(』–headless』) #瀏覽器不提供視覺化頁面. linux下如果系統不支援視覺化不加這條會啟動失敗
opts.binary_location = r"c:\users******\chrome.exe" # 填入chrome.exe的位址
driver = webdriver.chrome( options = opts)
123
4567
891011
1213
14
開啟**
在chromedriver中,我們用driver.get()函式開啟短評的**
driver.get(「」)
1
載入資料
接下來就是最痛苦也是最煎熬的環節了,載入資料。由於b站的資料是下拉框,一次載入20條,於是我們要拖動頁面,讓它們慢慢載入。
有三種方法。
用滑鼠左鍵拖動滑動條讓它們滑下去;
用滑鼠的滾輪拼命滾;
按住滑鼠滾輪讓它自己往下滾。
什麼?嫌麻煩?真沒辦法。
那我們用**來弄好了。
driver.execute_script(「window.scrollto(0,document.body.scrollheight)」)
1
這是乙個下拉滾動條的**,可以把滾動條拉倒最下面,但是只能拖一次,有什麼方法呢?
while(1):
driver.execute_script(「window.scrollto(0,document.body.scrollheight)」) # 下拉滾動條
1
2
用while迴圈,你如果想爬取20頁400條資料,就用
i = 0
while(i > 20):
driver.execute_script(「window.scrollto(0,document.body.scrollheight)」)
i += 1
123
4
現在就是到了我們最高興的時候,爬資料。
1
23
分析資料(我會介紹兩種方法)
xpath方法
但是,main_content其實是str型別,也就是字串,它很無法xpath分析。於是我們需要將它的型別進行轉換
from lxml import etree
html = etree.html(main_content)
result = etree.tostring(html)
result = result.decode(「utf-8」)
123
4
用這個函式進行轉換。將str型別的main_content修改為xml型別的result
之後我們就可以用xpath進行處理。
1
re法爬評分
re法可以直接處理str型別的main_content,其優勢在於可以比較方便地爬取一些字段,比如class裡的值,裡的值等。
我們可以看出,在源**中,星星會亮是因為 ,有icon-star-light的星星為亮的星星,也就是分數。所以我們要做的是把這些星星的**過濾出來,因此我們需要做的就是像這樣
我們用(.*?)功能提取我們想要的部分,並把它們變成乙個列表
評分 = re.findall(r』
』, main_content)
1
處理完畢後就會像這樣:
接下來統計會亮的星星的數量,這個簡單,用for迴圈。
123
4567
89
1
2
計算平均星數(星數乘2就是分數)
a = 0
for i in 分數:
a = a + i
print(a/len(分數))
123
4
做成** 爬取影評來分析電影《鷹獵長空》評論是如何的
資料獲取 貓眼電影是簡單的動態網頁,資料格式為json,通過解析介面的方式即可輕鬆獲取。def parse page html try data json.loads html cmts 將str轉換為json print data comments for item in data comment...
《鷹獵長空》講述戲曲與電影的淵源
中國第一部電影就是與京劇的結合 在如今的電影院裡,戲曲電影 顯然是弱勢群體,然而在專家們看來,戲曲電影的發展並不是晦暗的,因為它有著自己的觀眾群和值得傳承的文化精髓。在中外戲劇史論專家謝柏梁看來,中國電影行進的每一步都離不開戲曲電影的弦歌 1905年中國第一部電影 定軍山 便是電影與國粹京劇的結合。...
爬取B站彈幕
最近幾天學習爬蟲,便爬取了b站的彈幕,本篇博文記錄的是爬取彈幕的方法一,近期會更新方法二。下面是流程 點開這個包是這個形式的 這裡面就有明文的彈幕,但通過requests獲得的response是經過utf 8編碼加密過的,想要獲得彈幕內容還要解密。下面附 from bs4 import beauti...