Python爬虫之Scrapy框架使用selenium
生活随笔
收集整理的這篇文章主要介紹了
Python爬虫之Scrapy框架使用selenium
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
在scrapy中使用selenium的編碼流程:
1.在spider的構(gòu)造方法中創(chuàng)建一個瀏覽器對象(作為當前spider的一個屬性)2.重寫spider的一個方法closed(self,spider),在該方法中執(zhí)行瀏覽器關(guān)閉的操作3.在下載中間件的process_response方法中,通過spider參數(shù)獲取瀏覽器對象4.在中間件的process_response中定制基于瀏覽器自動化的操作代碼(獲取動態(tài)加載出來的頁面源碼數(shù)據(jù))5.實例化一個響應對象,且將page_source返回的頁面源碼封裝到該對象中6.返回該新的響應對象需求 在Scrapy框架中使用selenium來實現(xiàn)編程 網(wǎng)易頁面
wangyi.py
import scrapy from selenium import webdriver # 實例化瀏覽器可以通過中間件的process_response中的spider來獲取 #因此實例化瀏覽器可以寫在這里 class WangyiSpider(scrapy.Spider):name = 'wangyi'# allowed_domains = ['www.xxx.com']start_urls = ['http://war.163.com/']#實例化瀏覽器對象 只能被調(diào)一次def __init__(self):self.bro = webdriver.Chrome(r'C:\pacong_data\day3\chromedriver.exe')#不能寫在這 因為這里也會被調(diào)多次def parse(self, response):div_list = response.xpath('//div[@class="data_row news_article clearfix "]')for div in div_list:title = div.xpath('.//div[@class="news_title"]/h3/a/text()').extract_first()print(title)#在整個爬蟲結(jié)束之后才會被調(diào)用def closed(self,spider):print('關(guān)閉瀏覽器對象')self.bro.quit()middlewares.py
from time import sleep #1 HtmlResponse是response對應的類 from scrapy.http import HtmlResponseclass WangyiproDownloaderMiddleware(object):#攔截響應 重新生成一個新的響應對象 包含動態(tài)數(shù)據(jù) 實例化瀏覽器中不能寫在這 這個方法可能會調(diào)多次#實例化瀏覽器可以通過中間件的process_response中的spider來獲取#這里的request是response中所對應的請求對象def process_response(self, request, response, spider):# Called with the response returned from the downloader.# Must either;# - return a Response object# - return a Request object# - or raise IgnoreRequest#核心內(nèi)容 如何獲取動態(tài)加載的數(shù)據(jù) 使用selenium#獲取實例化的瀏覽器對象 通過spider來獲取#讓這個瀏覽器發(fā)送get請求 是請求的url#也就是wangyi.py中的start_urls = ['http://war.163.com/'] 這個urlprint('即將返回一個新的響應對象')bro = spider.brobro.get(url=request.url)#注意 這兩個寫法是一致的# bro.get(url='http://war.163.com/')# bro.get(url=spider.bro.current_url)sleep(3)#包含了動態(tài)加載出來的數(shù)據(jù) 獲取到頁面源碼數(shù)據(jù)page_text = bro.page_source#body 響應體return HtmlResponse(url=request.url,body=page_text,encoding='utf-8',request=request)settings.py
BOT_NAME = 'wangyiPro'SPIDER_MODULES = ['wangyiPro.spiders'] NEWSPIDER_MODULE = 'wangyiPro.spiders'USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36' # Crawl responsibly by identifying yourself (and your website) on the user-agent #USER_AGENT = 'wangyiPro (+http://www.yourdomain.com)'# Obey robots.txt rules ROBOTSTXT_OBEY = FalseDOWNLOADER_MIDDLEWARES = {'wangyiPro.middlewares.WangyiproDownloaderMiddleware': 543, }轉(zhuǎn)載于:https://www.cnblogs.com/mlhz/p/10473517.html
總結(jié)
以上是生活随笔為你收集整理的Python爬虫之Scrapy框架使用selenium的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SSH连接原理及ssh-key讲解
- 下一篇: [Python]小甲鱼Python视频第