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腳本,但是如何將二者結合起來,以及各種框架之間的靈活運用,都將是我需要面對的。
--------------------- 
藍藍設計www.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、網站建設 、平面設計服務

日歷

鏈接

個人資料

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

存檔

92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线
国产精品美女呻吟| 97涩涩爰在线观看亚洲| 亚洲成人999| 亚洲va电影大全| 午夜精品久久久久久久久久久久久| 亚洲国产精品大全| 正在播放欧美视频| 亚洲精品短视频| 国产精品黄色影片导航在线观看| 国产偷国产偷亚洲清高网站| 九九热精品视频在线播放| 亚洲第一精品福利| 国产午夜精品全部视频播放| 隔壁老王国产在线精品| 亚洲最大在线视频| 成人国产精品色哟哟| 欧美裸体xxxxx| 亚洲国产天堂网精品网站| 性色av一区二区三区红粉影视| 亚洲国产欧美一区二区三区同亚洲| 国产精品专区一| 日韩美女视频免费在线观看| 日韩中文在线中文网三级| 亚洲日本欧美日韩高观看| 欧美精品激情在线| 欧美国产视频一区二区| 欧美成年人视频网站欧美| 欧美成人在线免费视频| 中文字幕无线精品亚洲乱码一区| 久久久久北条麻妃免费看| 亚洲欧洲日产国码av系列天堂| 日韩av大片在线| 91热精品视频| 亚洲福利小视频| 国产精品久久久久久av下载红粉| 久久躁狠狠躁夜夜爽| 免费99精品国产自在在线| 国产精品欧美日韩一区二区| 日韩国产高清污视频在线观看| 97超碰国产精品女人人人爽| 91亚洲国产精品| 亚洲色图色老头| 成人有码在线播放| 国产精品爽爽爽| 亚洲第一精品福利| 在线看日韩欧美| 尤物99国产成人精品视频| 国产婷婷成人久久av免费高清| 日韩精品免费电影| 欧美一区三区三区高中清蜜桃| 在线不卡国产精品| 国产一区二区丝袜高跟鞋图片| 日韩精品高清在线观看| 欧美激情精品久久久久久久变态| 亚洲欧美国产va在线影院| 国产美女91呻吟求| 久久亚洲精品成人| 久久久久久香蕉网| 国产免费观看久久黄| 国产手机视频精品| 中文精品99久久国产香蕉| 中文字幕视频在线免费欧美日韩综合在线看| 日本高清不卡在线| 欧美丰满老妇厨房牲生活| 国产成+人+综合+亚洲欧美丁香花| 中日韩美女免费视频网址在线观看| 亚洲黄页网在线观看| 日韩视频永久免费观看| 欧美交受高潮1| 蜜臀久久99精品久久久久久宅男| 精品亚洲一区二区三区在线播放| 欧美另类69精品久久久久9999| 国产精品欧美在线| 国内精品久久久久久久久| 亚洲天堂av在线免费观看| 在线观看91久久久久久| 最新69国产成人精品视频免费| 久久亚洲春色中文字幕| 精品国内自产拍在线观看| 国产成人精品免费久久久久| 亚洲精品视频在线播放| 欧美成人合集magnet| 国产日韩中文字幕在线| 国产91精品青草社区| 日韩av免费看| 国产精品免费在线免费| 欧美激情2020午夜免费观看| 日韩电视剧在线观看免费网站| 欧美有码在线观看| 91sao在线观看国产| 欧美色videos| 日韩av免费一区| 欧美黄色成人网| 在线观看日韩专区| 国产在线日韩在线| 日韩亚洲第一页| 欧美日韩中文字幕在线视频| 欧美性xxxxx极品娇小| 91久久精品视频| 国产日韩欧美在线看| 中文字幕日韩高清| 欧美理论电影在线播放| 久久久这里只有精品视频| 91精品国产自产在线老师啪| 欧美一区二区三区艳史| 中文字幕综合在线| 国产欧美精品一区二区| 日韩小视频网址| 国产色视频一区| www.色综合| 国产精品亚洲美女av网站| 精品亚洲一区二区三区在线观看| 久久免费视频这里只有精品| 国产亚洲精品一区二555| 午夜剧场成人观在线视频免费观看| 岛国精品视频在线播放| 亚洲成人久久久久| 成人精品网站在线观看| 亚洲一区二区三区久久| www.精品av.com| 国产精品久久久久免费a∨| 精品国产网站地址| 国产视频久久久久| 隔壁老王国产在线精品| 欧美电影免费播放| 国产亚洲激情视频在线| 日韩成人激情在线| 国产精品久久久久久久天堂| 国产欧洲精品视频| 伊人久久免费视频| 久久久亚洲成人| 亚洲va欧美va国产综合剧情| 国产在线精品播放| 91九色在线视频| 97在线视频观看| 国产在线98福利播放视频| 亚洲成人免费在线视频| 日韩免费av在线| 亚洲国产欧美日韩精品| 97国产精品久久| 亚洲美女动态图120秒| 欧日韩在线观看| 日本三级韩国三级久久| 久久五月天综合| 一区二区日韩精品| 亚洲天堂av在线免费观看| 国产精品7m视频| 国产精品美女在线观看| 日本精品一区二区三区在线播放视频| 成人性生交大片免费观看嘿嘿视频| 国产成人精品久久二区二区91| 色午夜这里只有精品| 欧美专区第一页| 一区二区国产精品视频| 丝袜美腿亚洲一区二区| 成人黄色片在线| 亚洲成av人片在线观看香蕉| 日韩欧美亚洲范冰冰与中字| 国产一区二区三区18| 亚洲成年网站在线观看| 亚洲第一区在线观看| www.亚洲人.com| 91精品中国老女人| 亚洲精品久久久久国产|