Python爬蟲實(shí)戰(zhàn)1-解決需要爬取網(wǎng)頁N秒后的內(nèi)容的需求

小生博客:http://xsboke.blog.51cto.com

創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供樂至網(wǎng)站建設(shè)、樂至做網(wǎng)站、樂至網(wǎng)站設(shè)計(jì)、樂至網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、樂至企業(yè)網(wǎng)站模板建站服務(wù),10年樂至做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

                        -------謝謝您的參考,如有疑問,歡迎交流

前引:

    當(dāng)你需要爬取的頁面內(nèi)容在訪問頁面5秒后才會(huì)出現(xiàn),
    這時(shí)使用python的requests模塊就很難爬取到你想要的內(nèi)容了.

    requests和selenium的不同:
        requests是通過模擬http請(qǐng)求來實(shí)現(xiàn)瀏覽網(wǎng)頁的
        selenuim是通過瀏覽器的API實(shí)現(xiàn)控制瀏覽器,從而達(dá)到瀏覽器自動(dòng)化

    上面說了,selenium是通過控制瀏覽器實(shí)現(xiàn)訪問的,但是linux的命令行是不能打開瀏覽器的,
    幸運(yùn)的是Chrome和Firefox有一個(gè)特殊的功能headless(無頭)模式.(就是wujie面模式)
    通過headless模式可以實(shí)現(xiàn)在linux命令行控制瀏覽器。

    接下來要實(shí)現(xiàn)的就是在linux命令行界面通過Chrome的headless模式,實(shí)現(xiàn)獲取訪問網(wǎng)頁5秒后的內(nèi)容

一. 環(huán)境準(zhǔn)備

    1. 安裝谷歌瀏覽器linux版及其依賴包.

        [root@localhost ~]# wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
        [root@localhost ~]# yum localinstall google-chrome-stable_current_x86_64.rpm --nogpgcheck

    2. 下載selenium連接chrome的驅(qū)動(dòng)程序(要下載和chrome對(duì)應(yīng)的版本).
        [root@localhost ~]# google-chrome --version
        Google Chrome 72.0.3626.109 
        [root@localhost ~]# https://chromedriver.storage.googleapis.com/72.0.3626.69/chromedriver_linux64.zip
        [root@localhost ~]# unzip chromedriver_linux64.zip
        [root@localhost ~]# chmod +x chromedrive

    3.  安裝python需要模塊
        # beautifulsoup4是一個(gè)html,xml解析器
        [root@localhost ~]# pip install beautifulsoup4 selenium

二. 開始實(shí)現(xiàn)獲取網(wǎng)頁5秒后的數(shù)據(jù)

#!/usr/bin/env python
#-*- coding:utf-8 -*-
import time

from bs4 import BeautifulSoup
from selenium import webdriver

opt = webdriver.ChromeOptions()          # 創(chuàng)建chrome對(duì)象
opt.add_argument('--no-sandbox')          # 啟用非沙盒模式,linux必填,否則會(huì)報(bào)錯(cuò):(unknown error: DevToolsActivePort file doesn't exist)......
opt.add_argument('--disable-gpu')          # 禁用gpu,linux部署需填,防止未知bug
opt.add_argument('headless')          # 把chrome設(shè)置成wujie面模式,不論windows還是linux都可以,自動(dòng)適配對(duì)應(yīng)參數(shù)
driver = webdriver.Chrome(executable_path=r'/root/chromedriver',options=opt)    # 指定chrome驅(qū)動(dòng)程序位置和chrome選項(xiàng)
driver.get('https://baidu.com')          # 訪問網(wǎng)頁
time.sleep(5)           # 等待5秒
content = driver.page_source          # 獲取5秒后的頁面
soup = BeautifulSoup(content,features='html.parser')    # 將獲取到的內(nèi)容轉(zhuǎn)換成BeautifulSoup對(duì)象
driver.close()

print(soup.body.get_text())          # 通過BeautifulSoup對(duì)象訪問獲取到的頁面內(nèi)容

新聞名稱:Python爬蟲實(shí)戰(zhàn)1-解決需要爬取網(wǎng)頁N秒后的內(nèi)容的需求
本文網(wǎng)址:http://bm7419.com/article20/igeojo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、靜態(tài)網(wǎng)站關(guān)鍵詞優(yōu)化、移動(dòng)網(wǎng)站建設(shè)品牌網(wǎng)站制作商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化