自學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