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

