97国产精品视频人人做人人爱,3344在线观看无码,成年人国产视频,欧美日一级片,在线看AV天堂,高清无码一本到东京热,欧美一级黄片一区2区,免费又爽又刺激高潮网址

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.0391cbd.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、網站建設 平面設計服務

日歷

鏈接

個人資料

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

存檔

主站蜘蛛池模板: 欧美在线一级片| 精品国产电影久久九九| 欧美午夜久久| a级毛片网| 久久久波多野结衣av一区二区| 亚洲天堂网2014| 手机精品福利在线观看| 日韩国产亚洲一区二区在线观看| jizz国产在线| 亚洲精品波多野结衣| 亚洲第一精品福利| 性色一区| 四虎影视无码永久免费观看| 国产激情无码一区二区APP| 久久99精品久久久久久不卡| 国产精品自在线拍国产电影 | 国产精品视频999| 天天综合网亚洲网站| 黄色在线网| 久热中文字幕在线观看| 欧美日韩导航| h网站在线播放| 免费无码AV片在线观看中文| 国产精品色婷婷在线观看| 日韩免费成人| 免费a级毛片18以上观看精品| 美女内射视频WWW网站午夜| 欧美性天天| 亚洲自偷自拍另类小说| 国产人成乱码视频免费观看 | 亚洲91在线精品| 最新日本中文字幕| 91精品专区| 91美女视频在线观看| 中文字幕资源站| 国产精品开放后亚洲| 91原创视频在线| 亚州AV秘 一区二区三区| 一级成人a毛片免费播放| 欧美一区日韩一区中文字幕页| 欧美97色| 国产亚洲成AⅤ人片在线观看| 久久男人视频| 不卡无码h在线观看| 孕妇高潮太爽了在线观看免费| 国产永久在线观看| 日韩a级片视频| 国产91色| a级毛片免费在线观看| 午夜人性色福利无码视频在线观看| 在线观看免费AV网| 亚洲精选高清无码| 亚洲精品动漫| julia中文字幕久久亚洲| 国产三级毛片| 中文字幕乱码中文乱码51精品| 萌白酱国产一区二区| 国产Av无码精品色午夜| 国产成人亚洲综合A∨在线播放 | 国产亚洲精品在天天在线麻豆| 成人在线视频一区| 九色综合伊人久久富二代| 无码电影在线观看| 91精品久久久久久无码人妻| 91欧美亚洲国产五月天| 色国产视频| 久久精品66| 国产在线视频福利资源站| 国产又爽又黄无遮挡免费观看| 国产成人久视频免费| 久久中文字幕不卡一二区| 精品欧美视频| 97亚洲色综久久精品| 国产精品蜜芽在线观看| 成人福利在线观看| 高清久久精品亚洲日韩Av| 一级毛片高清| 久操中文在线| 国产在线麻豆波多野结衣| 91精选国产大片| 亚洲精品第一在线观看视频| 国产精品九九视频|