92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线

selenium處理網頁下拉加載數據爬取并存入excel

2019-7-17    seo達人

如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里

前言
之前有個同學詢問我是否能夠爬取知乎的全部回答,當初只會Scrapy無法實現下拉的數據全部加載。后來在意外中接觸了selenium的自動化測試,看出了selenium的模擬能力的強大,而昨天有個同學問我能否爬取中國工商銀行遠程銀行的精彩回答,我說可以試試。

思路
selenium模擬下拉直至底部
然后通過selenium獲取數據集合
通過pandas寫入excel
selenium模擬下拉直至底部
此處全靠一位大佬的博客點撥,實在不好意思的是,selenium就看了下常用的api,實在不懂如何判斷是否加載完畢,而該博客代碼的原理也好理解,通過不斷下拉判斷與上一次高度進行對比,知道前端頁面的滾動高度屬性就懂了,當然思想最重要。
見代碼:

#將滾動條移動到頁面的底部
all_window_height =  []  # 創建一個列表,用于記錄每一次拖動滾動條后頁面的最大高度
all_window_height.append(self.driver.execute_script("return document.body.scrollHeight;")) #當前頁面的最大高度加入列表
while True:
self.driver.execute_script("scroll(0,100000)") # 執行拖動滾動條操作
time.sleep(3)
check_height = self.driver.execute_script("return document.body.scrollHeight;")
if check_height == all_window_height[-1]:  #判斷拖動滾動條后的最大高度與上一次的最大高度的大小,相等表明到了最底部
print("我已下拉完畢")
break
else:
all_window_height.append(check_height) #如果不想等,將當前頁面最大高度加入列表。
print("我正在下拉")

然后通過selenium獲取數據集合
通過find_elements_by_css_selector方法獲取元素對象列表,然后通過遍歷列表獲取單個對象,通過對象的text屬性獲取數據。
代碼與"通過pandas寫入excel"代碼想結合。

通過pandas寫入excel
example.xlsx

批量將數據依次寫入excel,此處個人知道有兩種寫法,推薦后者。
寫法一:

problem = cls.driver.find_elements_by_css_selector("li h2.item-title a")
data = pd.read_excel('example.xlsx', sheet_name = 'Sheet1')
problemtext = []
for i in problem:
problemtext .append(i.text)
replytext = []
reply = cls.driver.find_elements_by_css_selector("div.item-right p")
for j in reply:
    replytext.append(j.text)
    data.loc[row,'答案'] = j.text
data['問題'] = problemtext
data['答案'] = replytext

DataFrame(data).to_excel('test.xlsx', sheet_name='Sheet1')

寫法二:

problem = cls.driver.find_elements_by_css_selector("li h2.item-title a")
data = pd.read_excel('example.xlsx', sheet_name = 'Sheet1')
row = 1
for i in problem:
    data.loc[row,'問題'] = i.text
    row += 1
row = 1
reply = cls.driver.find_elements_by_css_selector("div.item-right p")
for j in reply:
    data.loc[row,'答案'] = j.text
    row += 1

DataFrame(data).to_excel('test.xlsx', sheet_name='Sheet1')

完整代碼
import pandas as pd
from pandas import DataFrame
import unittest
import time
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.ui import WebDriverWait

class autoLogin(unittest.TestCase):

URL = 'http://zhidao.baidu.com/business/profile?id=87701'


@classmethod
def setUpClass(cls):
cls.driver = webdriver.Firefox()
cls.driver.implicitly_wait(20)
cls.driver.maximize_window()



def test_search_by_selenium(self):
self.driver.get(self.URL)
self.driver.title
time.sleep(1)
#將滾動條移動到頁面的底部
all_window_height =  []
all_window_height.append(self.driver.execute_script("return document.body.scrollHeight;"))
while True:
self.driver.execute_script("scroll(0,100000)") 
time.sleep(3)
check_height = self.driver.execute_script("return document.body.scrollHeight;")
if check_height == all_window_height[-1]:  
print("我已下拉完畢")
break
else:
all_window_height.append(check_height) 
print("我正在下拉")

@classmethod
def tearDownClass(cls):
html=cls.driver.page_source
problem = cls.driver.find_elements_by_css_selector("li h2.item-title a")
data = pd.read_excel('example.xlsx', sheet_name = 'Sheet1')
row = 1
for i in problem:
    data.loc[row,'問題'] = i.text
    row += 1
row = 1
reply = cls.driver.find_elements_by_css_selector("div.item-right p")
for j in reply:
    data.loc[row,'答案'] = j.text
    row += 1
    
DataFrame(data).to_excel('test.xlsx', sheet_name='Sheet1')

#保存成網頁
with open("index.html", "wb") as f:
f.write(html.encode())
f.close()
cls.driver.quit()

if __name__ == '__main__':
unittest.main(verbosity=2)

text.xlsx


總結
在使用Scrapy爬蟲時,可以通過selenium來執行網頁中的一些js腳本,但是如何將二者結合起來,以及各種框架之間的靈活運用,都將是我需要面對的。
--------------------- 
藍藍設計m.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、網站建設 、平面設計服務

日歷

鏈接

個人資料

藍藍設計的小編 http://m.skdbbs.com

存檔

92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线
欧美在线三级| 亚洲三级电影| 91嫩草亚洲精品| 国产精品一二区| 午夜一区二区三视频在线观看| 国产成人精品综合| 快播日韩欧美| 国产一区二区不卡老阿姨| 在线观看小视频| 欧美精品中文字幕亚洲专区| 国产乱码字幕精品高清av| 欧美日韩亚洲一区三区| 91精品国产沙发| 亚洲视频日韩精品| 亚洲天堂中文字幕在线观看| 久久久久久久久久国产| 日韩有码中文字幕在线| 国产精品我不卡| 国产精品视频地址| 久久久久www| 国产精品一码二码三码在线| 成人精品aaaa网站| 国产91免费看片| 第一福利永久视频精品| 一本一道久久a久久精品蜜桃| 激情欧美国产欧美| 激情久久久久久久| 国产在线久久久| 婷婷六月综合| 高清性色生活片在线观看| 亚洲视频播放| 国产精品a久久久久| 久久国产成人精品| 欧美成人精品一区| 国产午夜亚洲精品不卡| 亚洲自拍偷拍网址| 成人国产精品色哟哟| 欧美日韩中字一区| 日韩欧美中文字幕在线播放| av男人的天堂在线观看| 国产在线看片免费视频在线观看| 亚洲日韩欧美视频| 亚洲啊v在线免费视频| 91久久精品国产91久久性色| 日韩欧美一区电影| 亚洲免费福利一区| 欧美大片aaaa| 国产免费观看久久| 国产精品制服诱惑| 国产中文欧美日韩在线| 国产亚洲成av人片在线观黄桃| 中文天堂在线一区| 99视频国产精品| 亚洲欧美国产三级| 国产亚洲午夜高清国产拍精品| 懂色一区二区三区av片| 9191精品国产综合久久久久久| 久久久久久自在自线| a国产在线视频| 国产精品一久久香蕉国产线看观看| 欧美三级自拍| 国产成人在线色| 精品国产一区久久| 在线播放国产精品二区一二区四区| 国产成人自拍视频在线观看| 久久成人免费电影| 福利视频在线导航| 成人免费一区二区三区在线观看| 日韩欧美字幕| 日韩网站在线观看| 亚洲国产精品电影在线观看| 国产精品高潮呻吟久久av黑人| 成人黄色免费看| 国产美女精品视频| jizz免费一区二区三区| 日本三级久久久| 欧美日韩国产欧美日美国产精品| 欧美性感美女h网站在线观看免费| 亚洲激情自拍偷拍| 色狠狠av一区二区三区香蕉蜜桃| 亚洲精品国产欧美| eeuss国产一区二区三区| 日韩欧美一区二区视频| 亚洲韩国青草视频| 久久香蕉网站| 亚洲色在线视频| 美女网站色精品尤物极品姐弟| 免费欧美电影| 日韩成人精品| 国产丝袜视频一区| 久久精品青草| 在线国产亚洲欧美| 亚洲人成午夜免电影费观看| 精品蜜桃传媒| 日韩电影免费观看在线观看| www.亚洲人.com| 国产精品乱人伦中文| 欧美日韩卡一卡二| 精品久久久久久久久久久久久久久久久| 日韩欧美区一区二| 欧美日韩激情一区二区| 亚洲精品黑牛一区二区三区| 色噜噜狠狠狠综合曰曰曰| 欧美日韩免费观看一区=区三区| 91精品国产91久久久久福利| 欧美性受ⅹ╳╳╳黑人a性爽| 日本中文字幕不卡免费| 免费在线观看视频一区| 亚洲已满18点击进入在线看片| 91精品久久久久久久久久另类| 欧美群妇大交群中文字幕| 国产偷国产偷亚洲高清人白洁| 亚洲国产精品悠悠久久琪琪| 99麻豆久久久国产精品免费| 欧美黑人xxxxx| 免费看成人人体视频| 亚洲综合一二三区| 97久久伊人激情网| 欧美一级淫片aaaaaaa视频| 国产精品综合视频| 久久精品日产第一区二区三区| 国产精品久久久亚洲| 精品国产乱码久久久久久郑州公司| 在线免费亚洲电影| fc2成人免费人成在线观看播放| gogo高清午夜人体在线| 在线成人视屏| 国产精品免费观看高清| 国产精品入口久久| 日韩脚交footjobhd| 国产成人精品www牛牛影视| 亚洲欧洲国产日韩| 欧美性资源免费| 亚洲电影在线看| 亚洲第一在线综合在线| av资源中文在线| 999色成人| 欧美少妇xxxx| 欧美bbbxxxxx| 亚洲国产天堂网精品网站| 一本一本久久a久久综合精品| 日韩亚洲欧美在线| 欧美日韩在线一二三| 国产99久久精品一区二区永久免费| 日本.亚洲电影| 岛国一区二区三区| 亚洲情趣在线观看| 蜜桃精品一区二区三区| 青草青草久热精品视频在线观看| jvid福利写真一区二区三区| 久久九九有精品国产23| 女同一区二区免费aⅴ| av不卡免费电影| 欧美多人乱p欧美4p久久| 精品久久久久久久久久久久久| caoporn国产精品免费视频| 国产z一区二区三区| 国产美女精品人人做人人爽| 久久精品最新地址| 亚洲第一页自拍| 亚洲网站啪啪| 国产精品一区二区三区四区五区| 欧美日韩一区二区三区视频播放| 99久久精品情趣|