自學python小白提問:突然出現 SyntaxError: invalid syntax ,但之前運行成功一直都沒報錯

自學python小白提問:突然出現 SyntaxError: invalid syntax ,但之前運行成功一直都沒報錯

是這樣的,剛剛接觸程式語言不久,是個完全的萌新
因為好奇下,就寫了一個可以自動爬取FB的PYTHON

運作是這樣的:
使用selenium的webdriver,登陸自己的FB帳號,再跳轉到目標FB專頁,然後向下跳轉,自動爬取FB專頁貼文的東西,再儲存到一個EXCEL檔案之中

問題:
在儲存檔案時,(約130行),出現SyntaxError: invalid syntax。

個人的看法是:(130行)的指令應是與(第46行)配對的, 不應該出現「不正確的語法」

以下是程式碼,請各位大大指教萌新,感謝各位!!

    from selenium import webdriver

from selenium.webdriver.chrome.options import Options

from bs4 import BeautifulSoup

import time

from openpyxl import Workbook

#今日日期變成文字形式的DDMMYYYY

import datetime

today = datetime.datetime.now()

todays = today.strftime("%Y" + "%m" + "%d")

m = today.strftime("%m")

d = today.strftime("%d")

hour = today.strftime("%H"+ ":" +"%M")

#程式開始時間

start = datetime.datetime.now()

#阻攔錯誤

chrome_options = Options()

chrome_options.add_argument("--disable-popup-blocking")

chrome_options.add_argument('--disable-infobars')

chrome_options.add_argument('--disable-gpu')

prefs = {

'profile.default_content_setting_values':

{

'notifications': 2

}

}

chrome_options.add_experimental_option('prefs', prefs)

#登入

driver = webdriver.Chrome(chrome_options=chrome_options)

driver.get('https://facebook.com/')

time.sleep(3)

driver.find_element_by_id("email").send_keys("EMAIL") #將USERNAME改為你的臉書登入帳號

driver.find_element_by_id("pass").send_keys("PASSWORD") #將PASSWORD改為你的臉書密碼

driver.find_element_by_id("u_0_b").click()

#創建一個空白活頁簿物件

wb = Workbook()

#======================

#WEBSITE

url = [

" #隨便一個/一堆FB專頁的網址 "

]

for urls in url:

time.sleep(5)

driver.get(urls)

for i in range(2): # 捲動20次

time.sleep(5) # 等待5秒鐘讓頁面讀取

driver.execute_script("window.scrollTo(0, {})".format(3000 * (i + 1))) #每次捲動6000的單位(原設定為3000)

try:

soup = BeautifulSoup(driver.page_source,"lxml")

data = soup.find_all("div",class_="du4w35lb k4urcfbm l9j0dhe7 sjgh65i0")

name = soup.find("span",class_="d2edcug0 hpfvmrgz qv66sw1b c1et5uql rrkovp55 a8c37x1j keod5gw0 nxhoafnm aigsh9s9 embtmqzv fe6kdd0r mau55g9w c8b282yb hrzyx87i m6dqt4wy h7mekvxk hnhda86s oo9gr5id hzawbc8m").text

except Exception:

pass

finally:

# 建立工作表

ws = wb.create_sheet(name)

# 選取正在工作中的表單

# ws = wb.active

# 向下新增一列並連續插入值

ws.append([name])

ws.append(["發出日期",today,"最後更新",hour])

ws.append(["發出時間","內容","like數","留言數","分享數"])

# 調整ABCD行欄寬

ws.column_dimensions['A'].width = 15.0

ws.column_dimensions['B'].width = 30.0

ws.column_dimensions['C'].width = 15.0

ws.column_dimensions['D'].width = 15.0

ws.column_dimensions['E'].width = 15.0

time.sleep(3)

for datas in data:

try:

date = datas.find("b", class_="b6zbclly myohyog2 l9j0dhe7 aenfhxwr l94mrbxd ihxqhq3m nc684nl6 t5a262vz sdhka5h4").text.replace("=","")

sub = datas.find("div",class_="ecm0bbzt hv4rvrfc ihqw7lf3 dati1w0a").text

like = datas.find("span", class_="pcp91wgn").text

comsha = datas.find("div", class_="bp9cbjyn j83agx80 pfnyh3mw p1ueia1e").text

comsha2 = comsha.split("個回應")

comment = comsha2[0]

share = comsha2[1].replace("次分享","")

except Exception:

pass

finally:

ws.append([date,sub,like,comment,share])

#print()

#print(date)

#print(sub)

#print("Like數:"+like)

#print("留言數:"+comment)

#print("分享數:"+share)

#print()

print(name+"FACEBOOK 爬取資料完成"

#儲存成 *.xlsx 檔案

myfilename = todays+" facebook.xlsx" ###############報錯的位置###############

wb.save("d:/Python/5/"+todays+" facebook.xlsx")

wb.save("z:/database/"+todays+" facebook.xlsx")

#報時

print (">>>> ALL DONE!! <<<<")

print ("開始時間:")

print (start)

print ("完成時間:")

print (datetime.datetime.now())

driver.close()


回答:

新問題出現:

在增減不同的FB網址後, 程式會出現"第112行"中找不到代號"ws"
(就是最後 finally: 下面的一句, 原意是將資料新增一行並寫進EXCEL內的)

這是什麼原因呢?

以下是錯誤記述:
Traceback (most recent call last):
File "d:/PYTHON/FACEBOOK.py", line 112, in <module>

ws.append([date,sub,like,comment,share])

NameError: name 'ws' is not defined

以上是 自學python小白提問:突然出現 SyntaxError: invalid syntax ,但之前運行成功一直都沒報錯 的全部内容, 来源链接: utcz.com/a/158862.html

回到顶部