作者keroromoa (夏天一到就凸顯自己很魯)
看板Python
標題[問題] 爬蟲時href有空格
時間Mon Jan 15 21:15:24 2018
小弟爬蟲新手想請教各位前輩
目前有一個專題是要爬518人力銀行的徵才網頁
小弟目前是用beautifulsoup爬列表頁裡面的Anchor
但是518連結內文檔的Anchor href有空白像這樣
https://www.518.com.tw/外商線上娛樂集團 徵聘 JAVA Developer 2名 工作地點
菲律賓-其它亞洲-東南亞-job-1471387.html?kw=java&pi=1
導致使用
for link in soup.find_all('a'):
print(link.get('href'))
爬出來的href只到
https://www.518.com.tw/外商線上娛樂集團
空格後面的變成純字串造成爬出來的href連到錯誤的網頁
所以想請問此情況要如何解決讓空格後面的內容也可以放進去href?
感謝各位前輩幫忙~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.25.150.143
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1516022128.A.3FE.html
※ 編輯: keroromoa (114.25.150.143), 01/15/2018 21:24:43
1F:→ vi000246: regex 01/15 22:26
2F:→ tedwu2001: 1. 如果格式正確,就算有空白也不會影響抓到的attr內容 01/16 06:58
4F:→ tedwu2001: 2. 我自己對518發請求在一般列表可以抓到完整url 01/16 07:00
5F:→ tedwu2001: 綜上所述,你可能要看一下是不是你別的處理有截斷輸入 01/16 07:01
https://imgur.com/3q1Z7wn
不好意思,我表達的不夠清楚,
因為我是在jupyter notebook操作,所以希望抓下來的URL能夠保有連結的功能,
不過出來的URL還是一樣連結只到空格前,空格後變成純字串,
這樣來看是不是jupyter notebook在塞URL只要遇到空格都會出現同樣的狀況?感謝~
※ 編輯: keroromoa (118.165.209.19), 01/16/2018 20:28:03
6F:→ olycats: 所以你爬出來的href是正確的,只是在jupyter的print結果 01/16 22:04
7F:→ olycats: ,顯示的超連結不符合預期,直接點下去無法連結到你要的 01/16 22:04
8F:→ olycats: 網頁。是這樣嗎? 01/16 22:04
9F:→ keroromoa: 是,我這要求是不是太龜毛了Orz 01/16 22:26
10F:→ tedwu2001: 因為規格上url是不能有空白,實際上動作時會被encode 01/16 22:41
11F:→ tedwu2001: 這樣切是可以理解,不過剛剛試了markdown外掛也不行 01/16 22:42
12F:→ tedwu2001: 他不會照著變數去render.....這就很煩,不過還是可以解 01/16 22:43
15F:→ olycats: 可是為何需要在這裡顯示為超連結呢?如果是我的話,舉例 01/16 22:44
16F:→ olycats: 來說我想把資料抓了之後整理到excel檔,那對我來說print 01/16 22:44
17F:→ olycats: 出來的結果怎麼呈現並不重要。 01/16 22:44
18F:→ tedwu2001: 直接叫他吐html出來 01/16 22:46
19F:→ vi000246: 把空格改成%20試試看 01/17 00:26
20F:→ uranusjr: 直接在 print 之前 urlencode 一發不行嗎 01/17 11:31
21F:→ tedwu2001: 我覺得要考慮schema很麻煩加encode後不好讀就沒有保留 01/17 11:54
22F:→ tedwu2001: 在out上的意義,所以如果真要作還是會用_repr_html_ 01/17 11:55
最後是用先將所有anchor放進陣列再用特定字篩選出想要的anchor做成新的陣列
把新的陣列用for迴圈放進_repr_html_了,
只是包成_main.anchor_物件就沒辦法直接用陣列顯示出超連結,
必須要加index才能一個個把超連結顯示出,不過至少是能用的超連結了~感謝~
https://imgur.com/aagtHEz
https://imgur.com/8r7Jwg5
※ 編輯: keroromoa (140.115.236.203), 01/21/2018 18:35:09