快樂糖果屋css
一、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 爬蟲