New Ribbon
Canva+AI創意設計與品牌應用250招:從商業技巧、社群祕技到AI圖文影音特效 快快樂樂學威力導演2024.影音剪輯與AI精彩創作 文淵閣工作室祝福大家新年快樂.龍年吉祥 Power Automate自動化超效率工作術 Midjourney AI圖像魔導書:搭配ChatGPT魔法加倍 超人氣FB+IG+LINE社群經營與行銷力(第二版) 翻倍效率工作術:不會就太可惜的 Excel × ChatGPT 自動化應用 AppInventor2零基礎入門班中文版(第六版) Python零基礎入門班(第四版) C語言學習聖經 用Canva設計超快超質感:平面、網頁、電子書、簡報、影片製作與AI繪圖最速技 PHP8/MySQL網頁程式設計自學聖經 翻倍效率工作術 - 不會就太可惜的Power BI大數據視覺圖表設計與分析(第三版) 社群經營一定要會的影音剪輯與動畫製作術 Notion高效管理250招:筆記×資料庫×團隊協作,數位生活與工作最佳幫手 Office 2021高效實用範例必修16課(附500分鐘影音教學/範例檔) Excel自學聖經(第二版):從完整入門到職場活用的技巧與實例大全 網路開店×拍賣王:蝦皮來了(第二版) 專家都在用的Google最強實戰:表單、文件、試算、簡報、遠距與線上會議 超人氣 Instagram 視覺行銷力(第二版):小編不敗,經營 IG 品牌人氣王的 120 個秘技!

 

  python大數據特訓CH2

孫


更新時間:2021/9/20 下午 11:45:15

 

import requests
url = 'https://irs.thsrc.com.tw/IMINT/'
# 自訂表頭
headers={
   'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36'
}
# 將自訂表頭加入 GET 請求中
html = requests.get(url, headers=headers)
print(html)



書本範例的會卡住是甚麼原因
不是已經自訂headers了嗎

孫


更新時間:2021/9/21 上午 12:26:50

 

import requests
from bs4 import BeautifulSoup
url = 'http://ehappy.tw/bsdemo1.htm'
html = requests.get(url)
html.encoding = 'UTF-8'
sp = BeautifulSoup(html.text, 'lxml')

print(sp.title)
print(sp.title.text)
print(sp.h1)
print(sp.p)


也是跑不動(頁數2-122-12)

孫


更新時間:2021/9/21 上午 12:29:51

 

import requests
url = 'https://www.ptt.cc/bbs/Gossiping/index.html'
# 設定cookies的值
cookies = {'over18':'1'}
r = requests.get(url, cookies=cookies)
print(r.text)


以及這段要怎摸把這個程式碼加入PTT的cookie好能跳過18歲認證的頁面(頁數2-9)

文淵閣工作室

文淵閣工作室
更新時間:2021/9/22 上午 10:10:59

 

1. 高鐵的網站已經改版,我們再視狀況調整程式,如果有結果再分享。

2. 這個基礎範例的網址DNS在更新,應該很快就會好了,您再試看看。

3. PTT這個範例,根據您貼的程式碼就可以跳過認證了,可以爬到版上的資訊沒有問題,請問您要詢問的重點是?

文淵閣工作室

文淵閣工作室
更新時間:2021/9/22 上午 10:28:42

 

一、
headers={
   'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36'
}

Chrome/64.0.3282.186 中的 64.0.3282.186 必須是自已使用的Chrome 版本。
請查詢您使用的 Chrome 版本,例如:我使用的是 Chrome/93.0.4577.82


二、
<bs1.py> 因工作室網頁重整,現已修復可正常執行。


三、下列程式已設定 cookies = {'over18':'1'} 可跳過18歲認證的頁面,所以我不是很了解您的問題。
import requests
url = 'https://www.ptt.cc/bbs/Gossiping/index.html'
# 設定cookies的值
cookies = {'over18':'1'}
r = requests.get(url, cookies=cookies)
print(r.text)


四、高鐵網站結構修改,附修正的程式碼。
修正的程式碼 <twhrtimetable.py>,檔名為<twhrtimetable_new.py>

文淵閣工作室

文淵閣工作室
更新時間:2021/9/22 下午 01:03:43

 

抱歉忘了給<twhrtimetable_new.py>檔

from selenium import webdriver
# 高鐵時刻表查詢網站
url = 'http://www.thsrc.com.tw/tw/TimeTable/SearchResult'
ss='台中站'      #出發站
es='台北站'      #到達站

# 建立瀏覽器物件開啟網站
driver = webdriver.Chrome()
driver.get(url)
#按我同意
driver.find_element_by_xpath("//button[@class='swal2-confirm swal2-styled']").click()
#輸入出發站
driver.find_element_by_id('select_location01').send_keys(ss)
#輸入到達站
driver.find_element_by_id('select_location02').send_keys(es)  

#票種
# driver.find_element_by_id('typesofticket').send_keys("去回程")

#輸入日期
driver.find_element_by_id("Departdate03").click()
driver.find_element_by_xpath("//div[@id='tot-1']/div/div/ul/li/div/div/table/tbody/tr[5]/td[1]").click()
# # #輸入時間
driver.find_element_by_id("outWardTime").click() # tr[1]/td[1]=21:00 09:00
driver.find_element_by_xpath("//div[@id='tot-1']/div[2]/div/ul/li[2]/div/div/table/tr[1]/td[1]").click()

#優惠
# xxs=driver.find_elements_by_xpath("//ul[@class='dropdown-menu inner show']")
# for xx in xxs:
#     if "大學生" in xx.text:
#         xx.click()

driver.find_element_by_id('start-search').click() #按查詢鈕

孫


更新時間:2021/9/22 下午 11:01:09

 

能問一下



driver.find_element_by_id("outWardTime").click() # tr[1]/td[1]=21:00 09:00
driver.find_element_by_xpath("//div[@id='tot-1']/div[2]/div/ul/li[2]/div/div/table/tr[1]/td[1]").click()

tr[1]/td[1]=21:00 09:00這個要怎模看





driver.find_element_by_id("Departdate03").click()

driver.find_element_by_xpath("//div[@id='tot-1']/div/div/ul/li/div/div/table/tbody/tr[5]/td[1]").click()

tr[5]/td[1]
這個也是不太了解

孫


更新時間:2021/9/22 下午 11:13:05

 

那個是要用Xpath找對八

但是我用時刻的copy full Xpath
會是這個(21:00)


/html/body/div[4]/div[2]/section[3]/div/div[2]/div/div[3]/div[1]/div[2]/input


跟你的程式碼不一樣

孫


更新時間:2021/9/22 下午 11:27:42

 

另一個問題是


xxs=driver.find_elements_by_xpath("//ul[@class='dropdown-menu inner show']")
for xx in xxs:
    if "大學生" in xx.text:
        xx.click()


的dropdown-menu與 inner show
中間不用加 / 嗎

文淵閣工作室

文淵閣工作室
更新時間:2021/9/23 上午 10:54:34

 

#優惠
# xxs=driver.find_elements_by_xpath("//ul[@class='dropdown-menu inner show']")
# for xx in xxs:
#     if "大學生" in xx.text:
#         xx.click()

這是之前回答另一個讀者問題,我已將它註解了,所以這段程式碼並不會執行。
class='dropdown-menu inner show' 中 dropdown-menu inner show 是類別名稱,並不需要加路徑。

文淵閣工作室

文淵閣工作室
更新時間:2021/9/23 下午 04:20:34

 

高鐵網站的防護愈來愈嚴謹,很多程式內容是動態產生的,要解析其結構愈來愈因難。
有一個工具叫 Kalaton Recorder,可以協助解析,有興趣您可以 Google 一下。
附給您的程式有部份就是用  Kalaton Recorder 產生的。

xpath 搜尋的語法較複雜,我們
driver.find_element_by_xpath("//div[@id='tot-1']/div/div/ul/li/div/div/table/tbody/tr[5]/td[1]").click()

是以絕對路徑 //div[@id='tot-1'] 先找 id='tot-1' 的 div,然後拔這個 div 下中的 div/div/ul/li/div/div/table/tbody/tr[5]/td[1],這個路徑太長,不適合用手動分析,因此用 Kalaton Recorder 協助解析。

xpath 書上有提到,您可以再仔細研讀看看。

文淵閣工作室

文淵閣工作室
更新時間:2021/9/23 下午 04:22:55

 

高鐵網站的防護愈來愈嚴謹,很多程式內容是動態產生的,要解析其結構愈來愈因難。
有一個工具叫 Kalaton Recorder,可以協助解析,有興趣您可以 Google 一下。
附給您的程式有部份就是用  Kalaton Recorder 產生的。

xpath 搜尋的語法較複雜,下列程式:
driver.find_element_by_xpath("//div[@id='tot-1']/div/div/ul/li/div/div/table/tbody/tr[5]/td[1]").click()

是以絕對路徑 //div[@id='tot-1'] 先找 id='tot-1' 的 div,然後找這個 div 下中的 div/div/ul/li/div/div/table/tbody/tr[5]/td[1],這個路徑太長,不適合用手動分析,因此用 Kalaton Recorder 協助解析。

xpath 書上有提到,您可以再仔細研讀看看。




 

 

Re:python大數據特訓CH2

請輸入姓名。

已超出字元數目的最大值。


請輸入電子郵件。

格式無效。


請輸入內容。