Selenium + Scrapy爬取某商標資料
先談談用 Scrapy 框架爬取資料搭配使用 Selenium 的原因:
一般情況下我們使用 Scrapy 就可以完成所有爬取操作,但是爬取過程會遇到某些操作用程式碼實現非常複雜,比如我寫過的這篇部落格 Scrapy 模擬登入新版知乎 其中的 signature 引數的值,是在某個 js 中通過演算法加密生成的,很麻煩;但是我們不登入的話爬取的資料可能會不全面,,有沒有一種更好的辦法?答案是肯定的!那就是 Selenium,完全模擬人去操作瀏覽器;下面我通過在某商標網站模擬登入後爬取詳情資料為例告訴大家怎麼搭配使用 Selenium + Scrapy,本篇只介紹用法,預設已安裝了 Selenium 和 Scrapy
1、Selenium 模擬登入
def start_requests(self):
url = "https://account.quandashi.com/passport/login?callback=https%3A%2F%2Fwww.quandashi.com%2F"
driver = webdriver.Chrome(executable_path='E:\Develop\chromedriver_win32\chromedriver.exe') # 指定你安裝的 chromedriver 目錄,這兒使用的是Chrome, 當然你也可以換成 Firefox
driver.get(url)
time.sleep(5) # 延時的原因是等網頁載入完畢再去獲取欄位
driver.find_element_by_xpath('//*[@id="username"]').send_keys("使用者名稱") # 使用者名稱輸入框
driver.find_element_by_xpath('//input[@type="password"]').send_keys("密碼") # 密碼輸入框
driver.find_element_by_xpath('//*[@id="btn-login"]').click() # 登入按鈕
time.sleep(15)
cookie = driver.get_cookies() # 獲取登入後的 cookies
yield scrapy.Request(url="https://so.quandashi.com/index/search?key=查詢關鍵字",
headers=self.headers, dont_filter=True, cookies=cookie, meta={"cookie": cookie})
以上操作是通過 Selenium 模擬登入後獲取到對應的 coookie,後面的每次請求都帶上該 cookie
2、Scrapy 請求資料
def parse(self, response):
dl_nodes = response.xpath('//div[@class="searchLis-result"]/dl')
cookie = response.meta.get("cookie", ""),獲取傳過來的 cookie 值
for node in dl_nodes:
detail_url = node.xpath('dt/span/a/@href').extract_first() # xpath匹配規則,獲取詳情頁的 url
yield scrapy.Request(url=urlparse.urljoin(response.url, detail_url), headers=self.headers, dont_filter=True,
cookies=cookie, meta={"cookie": cookie, "present_status": present_status},
callback=self.parse_detail) # 每次請求都需要攜帶 cookie 值
def parse_detail(self, response):
print(response.text)
新增 parse_detail 函式處理傳過來的詳情頁資料,列印會發現裡面就是詳情 url 所對應的詳情資料 完整的原始碼
總結
我們可以使用 Selenium 來程式碼一些程式碼實現起來很複雜的操作,當然上面的例子沒有進行適合的封裝,僅僅是介紹了 Selenium + Scrapy 的用法,比如 Scrapy 所有的 url 下載操作都會經過中介軟體 DownloaderMiddleware,因此我們可以將 cookie 下載到本地,然後在中介軟體給 request 的每個 url 加上 cookie,這樣程式碼可讀性更好,而且程式碼更嚴謹
相關文章
- scrapy爬取豆瓣電影資料
- 如何提升scrapy爬取資料的效率
- 某魚直播資料全站爬取
- Python爬蟲框架:scrapy爬取高考派大學資料Python爬蟲框架
- Scrapy爬蟲 - 獲取知乎使用者資料爬蟲
- 如何利用 Selenium 爬取評論資料?
- 利用python爬取某殼的房產資料Python
- scrapy 爬電影 抓取資料
- 使用selenium爬取網頁,如何在scrapy shell中除錯響應網頁除錯
- Scrapy框架的使用之Scrapy爬取新浪微博框架
- 某網站加密返回資料加密_爬取過程網站加密
- 使用 Scrapy 爬取股票程式碼
- scrapy定製爬蟲-爬取javascript內容爬蟲JavaScript
- Scrapy爬取二手房資訊+視覺化資料分析視覺化
- scrapy爬取鏈家二手房存到mongo資料庫Go資料庫
- 使用selenium進行爬取掘金前端小冊的資料前端
- zf_利用feapder中的selenium網頁爬取資料網頁
- [python爬蟲] Selenium爬取內容並儲存至MySQL資料庫Python爬蟲MySql資料庫
- 使用selenium定位獲取標籤物件並提取資料物件
- 房產資料爬取、智慧財產權資料爬取、企業工商資料爬取、抖音直播間資料python爬蟲爬取Python爬蟲
- Scrapy框架爬取海量妹子圖框架
- 爬蟲教程——用Scrapy爬取豆瓣TOP250爬蟲
- python網路爬蟲--專案實戰--scrapy嵌入selenium,晶片廠級聯評論爬取(6)Python爬蟲晶片
- Scrapy爬蟲(6)爬取銀行理財產品並存入MongoDB(共12w+資料)爬蟲MongoDB
- Java爬蟲系列四:使用selenium-java爬取js非同步請求的資料Java爬蟲JS非同步
- scrapy實戰之定向抓取某網店商品資料
- 爬取高考資料
- 爬蟲 Scrapy框架 爬取圖蟲圖片並下載爬蟲框架
- python3 使用 Selenium 自動化測試或爬取資料Python
- Python爬蟲—爬取某網站圖片Python爬蟲網站
- scrapy爬蟲爬蟲
- 爬蟲搭建代理池、爬取某網站影片案例、爬取新聞案例爬蟲網站
- Python爬蟲-用Scrapy框架實現漫畫的爬取Python爬蟲框架
- Scrapy+Chromium+代理+selenium
- scrapy入門教程2:建立一個簡單的爬取南郵新聞標題的爬蟲demo爬蟲
- scrapy入門:豆瓣電影top250爬取
- Scrapy使用隨機User-Agent爬取網站隨機網站
- Python網路爬蟲3 – 生產者消費者模型爬取某金融網站資料Python爬蟲模型網站