Python分佈式爬蟲打造搜索引擎Scrapy精講

快樂糖果屋css

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

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

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

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

須要先安裝pyvirtualdisplay模塊github

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

複製代碼

複製代碼

# -*- 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系統下會出現錯誤chrome

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

須要兩個步驟解決瀏覽器

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

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

 

 

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

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

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

 

標籤: python 爬蟲

相關文章
相關標籤/搜索