[問題] bs4抓取連結問題消失

看板Python作者時間10年前 (2015/08/07 12:28), 編輯推噓7(7023)
留言30則, 2人參與, 最新討論串1/2 (看更多)
您好,我是一個剛學一個月的新手,有些指令還不太熟悉 我想抓取某個網頁的超連結 其中我要的連結都在 <ul class="no_listyle ar_grd"> 之下 我的程式碼如下 from bs4 import BeautifulSoup import requests res= requests.get('http: xxx') #實際網址太長,我用縮網址發文被說是廣告,只好寫xxx代替 soup = BeautifulSoup(res.text) ul = soup.findAll('ul',{'class':"no_listyle ar_grd"}) #找出來後,我想把<a href=" ">之中的超連結取出來,所以我試接著寫 for link in ul: print(link.find('a')['href']) 但只顯現出了第一個連結,我希望能把所有超連結取出 可否哪位好心大大指導一下呢? 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.56.41 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1438921705.A.8E6.html

08/07 12:31, , 1F
實際的網址被ptt認為是廣告,我沒辦推文寫出= =
08/07 12:31, 1F

08/07 12:33, , 2F
findall之後用for loop把每個找到的element讀出來
08/07 12:33, 2F

08/07 12:34, , 3F
a 也用 find all找
08/07 12:34, 3F

08/07 12:39, , 4F
樓上是說link.find('a')改成linkfindAll('a')?
08/07 12:39, 4F

08/07 12:40, , 5F
電腦回傳TypeError: 'NoneType' object is not callable
08/07 12:40, 5F

08/07 12:42, , 6F
嗯. len(ul) 長度是多少呢,會不會ul 條件沒設定好
08/07 12:42, 6F

08/07 12:42, , 7F
,只找到一個
08/07 12:42, 7F

08/07 12:43, , 8F
ul print 出來有五個連結
08/07 12:43, 8F

08/07 12:45, , 9F
抱歉,我剛抄錯error為
08/07 12:45, 9F

08/07 12:46, , 10F
TypeError: list indices must be integers, not str
08/07 12:46, 10F

08/07 12:49, , 11F
怪怪,假如確定每個裡面都有link但bf找不到的話可以
08/07 12:49, 11F

08/07 12:49, , 12F
用regexp直接搭配用
08/07 12:49, 12F

08/07 12:49, , 13F
len(ul)為1,取len(ul)[0]為19
08/07 12:49, 13F

08/07 12:50, , 14F
但通常bs找無都是條件沒有設定好
08/07 12:50, 14F

08/07 12:51, , 15F
那可能要以link in ui[0]:去找
08/07 12:51, 15F

08/07 13:09, , 16F
還是沒辦法error:'int' object is not subscriptable QQ
08/07 13:09, 16F

08/07 13:10, , 17F
links = ul[0].findAll('a')
08/07 13:10, 17F

08/07 13:10, , 18F
for link in links : print link
08/07 13:10, 18F

08/07 13:11, , 19F
我這樣有找到連結,你try看看
08/07 13:11, 19F

08/07 13:13, , 20F
因為你用find_all去找ul,ul又只出現一次,所以BS還是
08/07 13:13, 20F

08/07 13:14, , 21F
把他包成list,只是裏面只會有一個,所以要去ul[0]裏
08/07 13:14, 21F

08/07 13:15, , 22F
那裡面才會是文檔,文檔再進去找所有ul包含的a herf
08/07 13:15, 22F

08/07 13:15, , 23F
就會有link了
08/07 13:15, 23F

08/07 13:19, , 24F
成功了,感謝樓上^^
08/07 13:19, 24F

08/07 13:19, , 25F
順道請教要怎麼只擷取href裡的網址呢?
08/07 13:19, 25F

08/07 13:21, , 26F
URL + link['href'].strip()
08/07 13:21, 26F

08/07 13:21, , 27F
感激不盡
08/07 13:21, 27F

08/07 13:21, , 28F
因為網址從/MAIN 開始,所以前面要自己補上去,不然
08/07 13:21, 28F

08/07 13:23, , 29F
strpi()可以去頭尾的空白
08/07 13:23, 29F

08/07 13:28, , 30F
補一下上面: 不然會連不上
08/07 13:28, 30F
文章代碼(AID): #1Ln3FfZc (Python)
文章代碼(AID): #1Ln3FfZc (Python)