iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 16
0
AI & Data

蟲王養成 - scrapy系列 第 16

DAY 16 : scrapy selenium

  • 分享至 

  • xImage
  •  

先前發文
DAY 01 : 參賽目的與規劃
DAY 02 : python3 virtualenv 建置
DAY 03 : python3 request
DAY 04 : 使用beautifulsoup4 和lxml
DAY 05 : select 和find 抓取tag
DAY 06 : soup解析後 list取值
DAY 07 : request_header_cookie 通過網頁18限制
DAY 08 : ppt內文爬取
DAY 09 : 資料處理 split replace strip
DAY 10 : python csv 寫入 和dict 合併
DAY 11 : python class function
DAY 12 : crawl 框架 scrapy 使用
DAY 13 : scrapy 架構
DAY 14 : scrapy pipeline data insert mongodb
DAY 15 : scrapy middleware proxy
DAY 16 : scrapy selenium


首先 pip3 install selenium

然後到貢獻者下載自己瀏覽器的driver

目的是在selenium開啟瀏覽器讓網頁有js運作

from selenium import webdriver

import selenium的方法 再到class裡使用全域變數讓webdriver使用Firefox()的function

另外如果browserdriver的版本問題 , 只要查看自己的瀏覽器版本就可以找到相對映的driver版本 , 就可以解決這個問題了!!

class XxxxSpider(scrapy.Spider):
    name = 'xxxx'
    allowed_domains = ['xxxx.gap.com']
    start_urls = [
        'https://xxxx.gap.com/browse/'
        ]
    # browser = webdriver.Firefox() 如果已經export 這個瀏覽器 那就直接寫這行code 
    chromedriver = '/home/kevin/chromedriverK/bin/chromedriver'
    driver = webdriver.Chrome(chromedriver)

    def parse(self, response):
        self.browser.get('https://xxxx.gap.com/browse/product.do?pid=486372002&cid=1122882&pcid=1111336&vid=1&grid=pds_1_218_1#pdp-page-content')
        soup = BeautifulSoup(self.browser.page_source, 'lxml')

因為可能有法律問題,那爬取的網址這邊就以xxxx來代替 , 使用時請關閉settings.py

裡的ROBOTSTXT_OBEY , 實做時請找網頁關閉JavaScript時會消失很多資料且

切出ctrl + shift + i 找不到有js渲染頁面的某些資料的網頁進行實做 ,

再來就是抓取資料跟資料的應用!

但是使用這個方法來爬資料相較於直接抓取api來的慢 , 且跟開啟瀏覽器一模一樣就是吃效能

明天來介紹挖取api來進行資料爬取

歌歌歌!!


上一篇
DAY 15 : scrapy middleware proxy
下一篇
DAY 17 : scrapy 爬取js畫面資料(二)
系列文
蟲王養成 - scrapy30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言