三十一 Python分布式爬蟲打造搜索引擎Scrapy精講—chrome谷歌瀏覽器無界面運行、scrapy-splash、splinter


1、chrome谷歌瀏覽器無界面運行

chrome谷歌瀏覽器無界面運行,主要運行在Linux系統,windows系統下不支持

chrome谷歌瀏覽器無界面運行需要一個模塊,pyvirtualdisplay模塊

需要先安裝pyvirtualdisplay模塊

Display(visible=0, size=(800, 600))設置瀏覽器,visible=0表示不顯示界面,size=(800, 600)表示瀏覽器尺寸

復制代碼
# -*- coding: utf-8 -*-
import scrapy
from scrapy.http import Request,FormRequest
from selenium import webdriver                  # 導入selenium模塊來操作瀏覽器軟件
from scrapy.xlib.pydispatch import dispatcher   # 信號分發器
from scrapy import signals                      # 信號

class PachSpider(scrapy.Spider):                            #定義爬蟲類,必須繼承scrapy.Spider
    name = 'pach'                                           #設置爬蟲名稱
    allowed_domains = ['www.taobao.com']                    #爬取域名

    def __init__(self):                                                                                 #初始化

        from pyvirtualdisplay import Display
        display = Display(visible=0, size=(800, 600))
        display.start()

        self.browser = webdriver.Chrome(executable_path='H:/py/16/adc/adc/Firefox/chromedriver.exe')    #創建谷歌瀏覽器對象
        super(PachSpider, self).__init__()                                                              #設置可以獲取上一級父類基類的,__init__方法里的對象封裝值
        dispatcher.connect(self.spider_closed, signals.spider_closed)       #dispatcher.connect()信號分發器,第一個參數信號觸發函數,第二個參數是觸發信號,signals.spider_closed是爬蟲結束信號

        #運行到此處時,就會去中間件執行,RequestsChrometmiddware中間件了

    def spider_closed(self, spider):                                        #信號觸發函數
        print('爬蟲結束 停止爬蟲')
        self.browser.quit()                                                 #關閉瀏覽器

    def start_requests(self):    #起始url函數,會替換start_urls
        return [Request(
            url='https://www.taobao.com/',
            callback=self.parse
        )]


    def parse(self, response):
        title = response.css('title::text').extract()
        print(title)
復制代碼

 注意:Linux系統下會出現錯誤

報錯:easyprocess.EasyProcessCheckInstalledError: cmd=['Xvfb', '-help'] OSError=[Errno 2] No such file or directory

需要兩個步驟解決

  1.執行命令:sudo apt-get install xvfb    安裝xvfb軟件

  2.執行命令:pip install xvfbwrapper   安裝xvfbwrapper模塊

 

 

以下只是提到一下,前面講的selenium模塊操作瀏覽器已經夠用了

2、scrapy-splash,也是scrapy獲取動態網頁的方案,這里就不介紹了,詳情:https://github.com/scrapy-plugins/scrapy-splash

3、splinter,是一個操作瀏覽器的模塊 詳情:https://github.com/cobrateam/splinter

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM