Open patricia40719 opened 3 years ago
可以將你的程式碼貼上來嗎?
library(rvest)
library(httr)
resp <- GET("https://www.104.com.tw/jobs/search/?ro=0&isnew=14&keyword=實習%20intern&order=12&asc=0&rostatus=1024&page=1&mode=s&tm_source=104&utm_medium=internarea")
resp$status_code
html <- content(resp)
a <- html%>%
html_nodes("#maincontent > div.container__left > ul > li:nth-child(1) > div:nth-child(1) > div.item__job-info > div.item__job-prop > i.item__job-prop-item.item__job-prop-salary")%>%
html_attr("aria-label")%>%
html_text()
我這邊試你的 CSS Selector 也沒辦法 (一開始就沒有 id 是 maincontent
的東西)
但我用其它的 selector 確實可以找到東西
library(rvest)
library(httr)
resp <- GET("https://www.104.com.tw/jobs/search/?ro=0&isnew=14&keyword=實習%20intern&order=12&asc=0&rostatus=1024&page=1&mode=s&tm_source=104&utm_medium=internarea")
resp$status_code
#> [1] 200
html <- content(resp)
html %>% html_nodes("#maincontent")
#> {xml_nodeset (0)}
html %>% html_nodes("#js-job-content > article:nth-child(2) > div.b-block__left > div > span")
#> {xml_nodeset (2)}
#> [1] <span class="b-tag--default">月薪26,000~60,000元</span>
#> [2] <span class="b-tag--default">員工1000人</span>
- 有些html tag的class有很多名字,像是
<div class="b-block--top-bord job-list-item b-block--load b-clearfix js-loading-refresh b-hide">
,這時如果要呼叫這個div tag,只要挑他的其中一個名字寫,電腦就可以找到他了嗎?謝謝
確實可以找到,但同時也有可能找到其它 className 相同但不是你所想要的 element
除了上面的程式碼外,我也試了該網頁的其他東西,好像是有些東西可以,有些東西不行誒。 關於開發者工具的Copy Selector,還有一個問題我遇到的問題想請教: 假設有個html片段長這樣(我把層階跟class簡化很多,只是想大概表達一下個物件的相對位置)
<h2 class="a">
<a class="b">ABC</a>
</h2>
<h2 class="a">
<a class="b">DEF</a>
</h2>
<h2 class="a">
<a class="b">DHI</a>
</h2>
我的目標是找到ABC、DEF、GHI這三個標題,由於網頁HTML太複雜很難自己寫路徑,於是我先選取<h4>ABC</h4>
用Copy Selector複製他的路徑#js-job-content > article:nth-child(1) > div.b-block__left > h2 > a
,貼進R後成功抓到ABC,但沒抓到DEF、GHI,那麼我有沒有可能透過些微修改剛剛用來抓到ABC的那個Copy Selector的路徑,來一口氣抓到ABC、DEF、GHI三個標題。因為我發現<a class="b">DEF</a>
的路徑是#js-job-content > article:nth-child(2) > div.b-block__left > h2 > a
,中間那個article:nth-child(1)
和(2)
是不是關鍵。
可以喔,把 article:nth-child(1)
的 :nth-child(1)
拿掉就好:
html %>%
html_nodes("#js-job-content > article > div.b-block__left > h2 > a") %>%
html_text()
#> [1] "【巨匠東大日語 全新開幕】課程諮詢顧問(底薪+獎金3.6萬以上)#歡迎補教同業加入#歡迎實習生加入(美語南區台南)"
#> [2] "行政助理實習生-學生實習"
#> [3] "實習生 Internship"
#> [4] "實習生 Internship"
#> [5] "行銷實習生intern"
#> [6] "Intern ─ 智慧家庭設計師實習生"
#> [7] "【2021-實習專區Intern】企業實習生現正募集~!"
#> [8] "Web前端工程實習生(Web Front-end Intern)"
#> [9] "Operations Intern 營運實習生 (學生實習)"
#> [10] "【KOL Radar】業務企劃 實習生 Account Executive Intern"
#> [11] "網頁後端工程實習生(Web Back-end Intern)"
#> [12] "行銷部實習生-學生實習 Intern Project- Marketing Department"
#> [13] "新創實習【Amazon跨境電商】Visual Marketing Intern 視覺行銷實習生"
#> [14] "Order Services_Intern (訂單服務_實習生)"
#> [15] "Intern ─ 智慧家庭工程師實習生"
#> [16] "實習生"
#> [17] "實習生/工讀生"
#> [18] "[暑期實習] 2021動畫設計實習生"
#> [19] "Business Development Intern 業務開發實習生 (兼職亦可)"
#> [20] "[知名外商公司] Corporate Communications Intern 企業溝通實習生(公共關係)_SMS_855"
#> [21] "Operation Intern Sea Cargo/海運文件處理人員 實習生"
#> [22] "新創科技starup實習生-Marketing Intern"
助教你好,請問:
#maincontent > div.container__left > ul > li:nth-child(1) > div:nth-child(1) > div.item__job-info > div.item__job-prop > i.item__job-prop-item.item__job-prop-salary
),貼到R後R卻找不到東西,回傳呈現{xml_nodeset (0)}
(下圖是我的程式碼),想請問助教為什麼會這樣。<div class="b-block--top-bord job-list-item b-block--load b-clearfix js-loading-refresh b-hide">
,這時如果要呼叫這個div tag,只要挑他的其中一個名字寫,電腦就可以找到他了嗎?謝謝