嫩草影院久久99_老司机午夜网站国内精品久久久久久久久_久久夜色精品国产_国产一级做a爰片久久毛片

selenium處理網(wǎng)頁(yè)下拉加載數(shù)據(jù)爬取并存入excel

2019-7-17    seo達(dá)人

如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請(qǐng)點(diǎn)這里

前言
之前有個(gè)同學(xué)詢問(wèn)我是否能夠爬取知乎的全部回答,當(dāng)初只會(huì)Scrapy無(wú)法實(shí)現(xiàn)下拉的數(shù)據(jù)全部加載。后來(lái)在意外中接觸了selenium的自動(dòng)化測(cè)試,看出了selenium的模擬能力的強(qiáng)大,而昨天有個(gè)同學(xué)問(wèn)我能否爬取中國(guó)工商銀行遠(yuǎn)程銀行的精彩回答,我說(shuō)可以試試。

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

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

然后通過(guò)selenium獲取數(shù)據(jù)集合
通過(guò)find_elements_by_css_selector方法獲取元素對(duì)象列表,然后通過(guò)遍歷列表獲取單個(gè)對(duì)象,通過(guò)對(duì)象的text屬性獲取數(shù)據(jù)。
代碼與"通過(guò)pandas寫入excel"代碼想結(jié)合。

通過(guò)pandas寫入excel
example.xlsx

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

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['問(wèn)題'] = 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,'問(wèn)題'] = 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)
#將滾動(dòng)條移動(dòng)到頁(yè)面的底部
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,'問(wèn)題'] = 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')

#保存成網(wǎng)頁(yè)
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


總結(jié)
在使用Scrapy爬蟲時(shí),可以通過(guò)selenium來(lái)執(zhí)行網(wǎng)頁(yè)中的一些js腳本,但是如何將二者結(jié)合起來(lái),以及各種框架之間的靈活運(yùn)用,都將是我需要面對(duì)的。
--------------------- 
藍(lán)藍(lán)設(shè)計(jì)m.sdgs6788.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、網(wǎng)站建設(shè) 平面設(shè)計(jì)服務(wù)

日歷

鏈接

個(gè)人資料

存檔

嫩草影院久久99_老司机午夜网站国内精品久久久久久久久_久久夜色精品国产_国产一级做a爰片久久毛片
<em id="09ttv"></em>
    <sup id="09ttv"><pre id="09ttv"></pre></sup>
    <dd id="09ttv"></dd>

        • 亚洲高清色综合| 亚洲日本欧美日韩高观看| 国产精品久久久久久福利一牛影视| 国产精品一区二区久激情瑜伽| 亚洲激情黄色| 久久综合激情| 亚洲与欧洲av电影| 欧美精品激情在线观看| 黄色精品一区| 久久久精品国产免大香伊| 亚洲视频网在线直播| 欧美日韩视频在线第一区| 亚洲乱码国产乱码精品精可以看| 免费不卡在线观看av| 久久国产日韩| 国产欧美一区二区三区在线看蜜臀| 亚洲午夜视频在线| 日韩视频精品在线观看| 欧美日韩视频专区在线播放 | 在线观看欧美| 久久精品在线观看| 亚洲精品综合久久中文字幕| 亚洲人成77777在线观看网| 午夜精品www| 国产亚洲精品资源在线26u| 久久久精品视频成人| 久久精品官网| 亚洲国产成人精品女人久久久 | 欧美日本成人| 亚洲视频一区二区| 亚洲无限av看| 国产日韩亚洲欧美综合| 久久在线免费| 欧美高清视频在线| 亚洲午夜一区| 欧美亚洲一区二区三区| 又紧又大又爽精品一区二区| 欧美国产日韩a欧美在线观看| 麻豆精品在线视频| 亚洲一区二区黄色| 欧美一区午夜视频在线观看| 国内激情久久| 亚洲精品一区二区三区99| 国产精品日韩高清| 欧美 日韩 国产精品免费观看| 欧美经典一区二区| 久久9热精品视频| 欧美成人免费在线| 亚洲综合999| 你懂的亚洲视频| 欧美一区二区三区在线播放| 免费日韩av| 欧美一区二区三区另类| 麻豆精品在线视频| 欧美一区二区三区在线看 | 在线日韩av片| 一区二区三区黄色| **网站欧美大片在线观看| 中文日韩在线视频| 亚洲国产精品久久精品怡红院| 一本色道久久综合精品竹菊 | 国产精品乱码久久久久久| 欧美v国产在线一区二区三区| 欧美色图天堂网| 猛干欧美女孩| 国产欧美日韩综合精品二区| 亚洲精品欧美在线| 亚洲国产成人av| 久久国产高清| 香蕉久久夜色精品国产| 欧美日韩激情网| 亚洲第一页中文字幕| 国产综合久久久久影院| 亚洲一二三区视频在线观看| 欧美日韩在线精品| 亚洲国产精品成人一区二区| 亚洲自拍电影| 亚洲中字黄色| 欧美特黄一区| 日韩亚洲欧美一区| 日韩视频―中文字幕| 蜜臀91精品一区二区三区| 久久久久高清| 国模私拍视频一区| 久久精品国产一区二区三区| 久久久久9999亚洲精品| 国产亚洲欧美激情| 久久福利影视| 欧美国产大片| 亚洲老板91色精品久久| 欧美好吊妞视频| 最新亚洲一区| 在线中文字幕一区| 国产精品九九久久久久久久| 亚洲少妇诱惑| 久久国产视频网站| 国语自产在线不卡| 久久久久国产精品一区三寸| 你懂的国产精品| 亚洲人永久免费| 欧美激情黄色片| 亚洲美女色禁图| 亚洲欧美国产三级| 国产性猛交xxxx免费看久久| 久久久久久久国产| 欧美激情一二区| 99精品视频免费全部在线| 欧美精品日韩一区| 中文精品视频| 久久综合九色综合网站| 亚洲激情电影在线| 欧美天堂亚洲电影院在线观看| 亚洲免费视频在线观看| 久久夜色精品国产| 亚洲欧洲日韩在线| 欧美三级电影大全| 性久久久久久| 亚洲电影第1页| 亚洲综合国产| 亚洲成人在线网| 欧美日一区二区在线观看| 香港成人在线视频| 欧美激情片在线观看| 亚洲一区二区三区四区视频| 国产一区二区三区自拍| 欧美va亚洲va日韩∨a综合色| 中文精品一区二区三区| 欧美大片在线影院| 欧美一区二区三区啪啪| 亚洲级视频在线观看免费1级| 国产精品久久久久久久久免费 | 亚洲国产成人精品久久久国产成人一区 | 久久婷婷影院| 一区二区三区视频在线播放| 国产区精品视频| 欧美国产欧美综合 | 国产一区成人| 欧美人在线视频| 久久综合九色欧美综合狠狠| 一区二区欧美日韩| 一区二区视频免费完整版观看| 欧美伊久线香蕉线新在线| 亚洲日本中文| 久久久久久亚洲精品杨幂换脸| 99精品国产在热久久婷婷| 国产性色一区二区| 欧美jizzhd精品欧美喷水| 香蕉av福利精品导航| 亚洲精选大片| 亚洲电影毛片| 美女久久一区| 欧美一级电影久久| 一区二区三区你懂的| 亚洲国产精品综合| 国产综合一区二区| 国产精品亚洲一区| 欧美伦理一区二区| 久热综合在线亚洲精品| 欧美在线资源| 亚洲欧美日韩视频一区| 一区二区激情小说| 亚洲欧洲日产国产网站| 玖玖玖免费嫩草在线影院一区| 性高湖久久久久久久久| 一区二区av| 99精品欧美一区| 亚洲人成网站777色婷婷| 伊人精品在线| 在线日韩成人| 亚洲高清在线观看| 亚洲第一中文字幕在线观看| 黄色亚洲大片免费在线观看| 国产欧美日韩综合| 国产日产精品一区二区三区四区的观看方式 | 国产欧美视频一区二区| 国产欧美va欧美不卡在线| 国产精品久久网| 国产精品日韩| 国产精品色网| 国产九九精品视频| 国产亚洲综合精品| 一区二区视频在线观看| 亚洲福利久久| 日韩午夜在线播放| av不卡免费看| 亚洲欧美另类国产| 久久精品国产综合精品| 久久免费国产| 欧美v日韩v国产v| 亚洲国产欧美一区二区三区同亚洲| 欧美成人精品h版在线观看| 欧美国产丝袜视频| 亚洲精品视频免费| 一区二区三区欧美在线| 亚洲欧美美女| 久久视频精品在线| 欧美精品啪啪| 国产欧美精品日韩区二区麻豆天美 | 精品二区视频| 亚洲人成免费|