1. Html網頁結構介紹-網頁到底如何傳送資料?爬蟲必學
2. 資料傳遞:Get與Post差異,網路封包傳送的差異
3. Html爬蟲Get教學-抓下Yahoo股票資訊,程式交易的第一步
4. Html爬蟲Get實戰-全台最大美食平台FoodPanda爬蟲,把熊貓抓回家
5. 資料分析實戰,熊貓FoodPanda熱門美食系列|看出地區最火料理種類
6. Json爬蟲教學-Google趨勢搜尋|掌握最火關鍵字
7. Json爬蟲實戰-24小時電商PChome爬蟲|雖然我不是個數學家但這聽起來很不錯吧
8. Html爬蟲Post教學-台灣股市資訊|網韭菜們的救星
9. Html爬蟲Post實戰-全球美食平台UberEat爬蟲
10. Pandas爬蟲教學-Yahoo股市爬蟲|不想再盯盤
11. Pandas爬蟲實戰-爬下全台各地區氣象預報歷史資料
12. 資料分析實戰-天氣預報圖像化|一張圖巧妙躲過雨季
æ¬æ¬¡èª²ç¨ä½¿ç¨Seleniumç¬è²ï¼æä»¥ä½ è¦å çãSelenium實æ°ç·´ç¿ï¼UberEatç¬è²ãæå¸åï¼ å¨æ¥ä¸ä¾çIG課ç¨ä¸ï¼æææ¨å¦ä½è®æ©å¨äººå¹«æ¨èªåææå¿ãèå¨éå 課ç¨ä¸ï¼æå ææ¨å¦ä½èªåç»å ¥IG帳èï¼ä»¥ä¾¿ä¹å¾ç課ç¨é²è¡ã
è¥æ¨æ¯Pythonçæ°æï¼å»ºè°å¯ä»¥ä¸è¼Anacondaä¾æ建ç°å¢ã以ä¸å ©åAnacondaçä»ç´¹ï¼
æ´å實ä½åªéè¦ç¨å°Seleniumå¥ä»¶ï¼å æ¤è¥æ¯ä½¿ç¨Anacondaï¼å°±ç´æ¥å¨Anaconda promptä¸è¼¸å ¥ä»¥ä¸æ令ï¼è¥å¨ç³»çµ±ç°å¢ä¸å®è£pythonï¼åç´æ¥å¨Terminalè²¼ä¸æ令å³å¯ã
pip install selenium
é»æä¸è¼phantomjs phantomjsæ¯Seleniumçæ§å¶å¨ï¼çæ¼æ¯å°pythonç¨å¼ç¢¼è®ææ©å¨äººçå·¥å ·ãSeleniumä¹æ以è½ç¬å°è¨±å¤ç¬è²ç¬ä¸å°ç網ç«ï¼å°±æ¯å çºSeleniumæ¯æ¨¡ä»¿äººçè¡çºï¼ççæéä¸åç覽å¨ï¼ä¸åå³çµ±çç¬è²ï¼ç´æ¥è«æ±å°å ä¸ä¾è§£æãç¶ç¶éåææ缺é»Seleniumçå·è¡æçç¸å°å°±å·®å¾å¤ï¼ä½é¢å°IGé種ãåæ å¼ãç網ç«ï¼å¿ é è¦ç¨Seleniumæè½éçå°ã
ä¸å系統ï¼å示å¯è½æä¸å¤ªä¸æ¨£ï¼ä½ä¸å½±é¿åè½ï¼è®è ä¸å¿ é度æå¿ã
é»æä¸è¼chromedriver chromedriveræ¯å°é給ç¨å¼æ§å¶çç覽å¨ãå æ¤å¯¦ä½æï¼ç¨å¼æ幫æ¨éåä¸åchromeç覽å¨ï¼ä¸¦ä¸æç §ç¨å¼èªåææéï¼ç¶ç¶ä¹å¯ä»¥äººå·¥ä»å ¥æä½ãchromedriverå¿ é èæ¨ç®åçchromeçæ¬ç¸åï¼è¥æ¨ä¸ç¥éæ¨chromeççæ¬ï¼å¯ä»¥é»é裡æ¥çéä¸è¼ççæ¬ï¼ç¢ºå®å¾ï¼å³å¯é»ä¸æ¹é¸æä¸è¼æªæ¡ã
phantomjsèchromedriverä¸è¼å®æå¾ï¼é½å¿ é æ¾å°ä¸»ç¨å¼çè³æ夾ä¸ï¼å¦ä¸åå³ï¼ï¼è®Python確ä¿è½æå°éå ©åæªæ¡ãè¥ç³»çµ±çºlinuxï¼å¯è½ææ使ç¨chromedriverèphantomjsæªæ¡æ¬éåé¡ï¼å æ¤å¿ é è¦è¼¸å ¥ä»¥ä¸ä¾æéæ¬éï¼777çºå ¨éï¼è¥æ¯è¦ºå¾æå®å ¨çæ ®è å¯ä»¥èªè¡èª¿æ´ï¼ã
å¿ é è¼¸å ¥æ¨ç帳èå¯ç¢¼ï¼ä»¥æ¹ä¾¿èªåç»å ¥ãtagsåæ¯è¼¸å ¥æ³è¦å°åªåtagæè®ï¼å æ¤éäºtagé常è¦èåçææç¸éã
IGID = 'æ¨çIG帳è'
IGpassword = 'æ¨çIGå¯ç¢¼'
tags=['guitar','guitarcover','music','ä»','followme','likeforlike','like4like','follow4follow','followforfollow','instagood','f4f']
è¨å®è«æ±æéçè³è¨ï¼å æ¤å¯ä»¥å¨21è¡ï¼ä¿®æ¹æèªå·±çUser-Agentï¼ä½è¥ç¨å¼å¯ä»¥å·è¡ï¼åå°±ä¸éè¦ç¹å¥ä¿®æ¹ï¼å æ¤å¯ä»¥å å·è¡éå»ï¼è¥æåºç¾bugï¼ååä¾æª¢æ¥å³å¯ã
User-Agentæ¯å°å å¨å³éæï¼å¿ è¦çè³è¨ï¼å æ¤è£¡é¢å¯ä»¥çå°è©²ä½¿ç¨è çç覽å¨ãä½æ¥ç³»çµ±çè³è¨ãå¨ç¬è²çæåï¼æäºç¶²ç«æ檢æ¥User-Agentæ¯å¦æ£ç¢ºï¼ä½å¨IGä¸ä¸ç¨ã
# è¨å®åºæ¬åæ¸
desired_capabilities = DesiredCapabilities.PHANTOMJS.copy()
#æ¤èå¿
é ææèªå·±é»è
¦çUser-Agent
desired_capabilities['phantomjs.page.customHeaders.User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
# PhantomJS driver è·¯å¾ ä¼¼ä¹åªè½çµå°è·¯å¾
driver = webdriver.PhantomJS(executable_path = 'phantomjs', desired_capabilities=desired_capabilities)
å·è¡ä»¥ä¸ç¨å¼ç¢¼ï¼å°±æå½åºä¸å空ç½çchromeãç¨å¼ç¢¼ä¸æä¸è¡è¨»è§£ï¼è¥ç¨å¼å·²ç¶ç©©å®ï¼ä¸éè¦è·³åºchromeäºï¼å°±å°éä¸è¡ç註解æ¿æå³å¯ã
# éééç¥æé
chrome_options = webdriver.ChromeOptions()
prefs = {"profile.default_content_setting_values.notifications" : 2}
chrome_options.add_experimental_option("prefs",prefs)
# 以ä¸ä¸å註解æéï¼ç覽å¨å°±ä¸æéå
# chrome_options.add_argument('--headless')
# chrome_options.add_argument('--no-sandbox')
# chrome_options.add_argument('--disable-dev-shm-usage')
# éåç覽å¨
driver = webdriver.Chrome('chromedriver',chrome_options=chrome_options)
driver.getå³å¯æ§å¶chromeå°ä»»ä½æ¨æ³è¦ç網åãéåé段ï¼æäºå¸³èæè¨å®å ©é段é©èï¼çè³æ¯ç¨FBç»å ¥ï¼éå¯è½æé æç»å ¥ç¡æ³èªååï¼å æ¤éå¡ä¹å¯ä»¥ç´æ¥ç¨æåçæ¹å¼è¼¸å ¥ã
####### éå§æä½ è¼¸å
¥å¸³èå¯ç¢¼ç»å
¥ å°IGé¦é #######
driver.get("https://www.instagram.com/")
time.sleep(1)
assert "Instagram" in driver.title
time.sleep(3)
driver.find_element_by_xpath('//*[@name="username"]').send_keys(IGID) #輸å
¥ç»å
¥å¸³è
time.sleep(1)
driver.find_element_by_xpath('//*[@name="password"]').send_keys(IGpassword) # 輸å
¥ç»å
¥å¯ç¢¼
time.sleep(3)
driver.find_element_by_xpath('//*[@type="submit"]').click()
time.sleep(3)
# è¥ç覽å¨æåæ¯å¦å²åï¼é£éå以ä¸å
©è¡è¨»è§£
# driver.find_elements_by_xpath('//*[@type="button"]')[1].click() #æ¯å¦å²åç覽å¨è³æï¼ãç¨å¾å說ã
# time.sleep(3)
å¨éå§åï¼ä½ çIGåçè¦ç«å¥½äºåï¼å¿«çãIGåçè¦åï½æ³è¦å¨Instagraméåçç²å°ï¼å ççå¦ä½åçå®ä½å§ã
作者:楊超霆 行銷搬進大程式 創辦人