下面代碼想把while陳述句改為for陳述句,哪個地方寫錯了嗎?為什么while陳述句執行沒問題,for陳述句執行時,資料不保存?
try:
# 當前頁面小于總頁碼時回圈繼續
while int(page_active) < page_num + 1:
items = get_data()
save_data(items)
if page_active == page_num:
break
next_page()
page_active = WAIT.until(EC.presence_of_element_located(
(By.CSS_SELECTOR, '#video-list > div.page-wrap > div > ul > li.page-item.active'))).text
# # 改為for陳述句
# for num in range(page_num):
# items = get_data()
# save_data(items)
# next_page()
finally:
browser.quit()
book.save('視頻資訊串列.xlsx')
自定義函式
def get_data():
"""
獲取網頁中視頻的名稱、視頻地址、描述、觀看次數、彈幕數量、發布時間
:return:視頻名稱、視頻地址、描述、觀看次數、彈幕數量、發布時間
"""
print('開始獲取資料')
# 獲取視頻頁面的內容用.page_source熟悉
html = browser.page_source
# 正則運算式一定要用r''來設定運算式字串
pattern = re.compile(
r'<li.*?<a title="(.*?)" href="https://bbs.csdn.net/topics/(.*?)".*?"des hide">(.*?)</div>.*?"icon-playtime"></i>(.*?)</span>.*?"icon-subtitle"></i>(.*?)</span>.*?"icon-date"></i>(.*?)</span>.*?</li>',
re.S)
items = re.findall(pattern, html)
for item in items:
yield [
item[0],
item[1],
item[2],
item[3],
item[4],
item[5]
]
def save_data(items):
"""
保存獲取的視頻資訊
:param items: 視頻資訊生成器
:return: 無
"""
print('開始保存資料')
for item in items:
# 引入全域變數,向下保存資料
global n
for j in range(len(item)):
sheet.write(n, j, item[j])
print(n, j)
n = n + 1
uj5u.com熱心網友回復:
len(item)uj5u.com熱心網友回復:
沒懂轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/33170.html
上一篇:如何用VBA讓指定的EXCEL Sheet生成一個CSV檔案
下一篇:新人剛接觸,哥哥們看看問題
