2017-09-13 87 views
0

我試圖刮掉所有的教練名單instiututes上thsi網址: https://www.sulekha.com/entrance-exam-coaching/delhi刮多頁在一個網站

以下是我的Python代碼:

import bs4 
from urllib.request 
import urlopen as uReq 
from bs4 
import BeautifulSoup as soup 

my_url = 'https://www.sulekha.com/entrance-exam-coaching/delhi' 

uClient = uReq(my_url) 
page_html = uClient.read() 
uClient.close() x 

page_soup = soup(page_html, "lxml") 


insti = page_soup.findAll("div", {"class": "list-title"}) 

filename = "entrance_institutes.csv" 

f = open(filename, "w") 
headers = "Institute \n" 
f.write(headers) 

for ins in insti: 
    ins_name = ins.div.a["title"] 

f.write(ins_name + "\n") 

f.close() 

此代碼運行正常。附加的是它生成的csv的圖像。我應該如何去把所有的物品一頁接一頁地抄下來?

感謝

Output csv

+0

我認爲你現在的代碼並不是從一個頁面上保存所有研究所的名字,對吧?你的'f.write'語句不應該在'for'循環中嗎? –

+0

該代碼運行良好..我對此非常新。我需要了解的是如何進入下一頁..?這段代碼在第一頁上拼寫了10個研究所的名字。我需要做什麼/學習如何使程序自動遍歷所有頁面,並不斷地將名稱拼湊到csv文件上。 –

+0

需要通過不同的URL遍歷不同的頁面。所以現在你必須找出哪些網址是。也許他們有一個簡單的結構,或者你可以從頁面本身刮掉它們,或者你可以簡單地點擊分頁鏈接中的下一個按鈕,並使用允許的那個庫。 –

回答

0

我不是100%肯定你的意思。如果你問如何解決這個bug在你的代碼,那麼你需要你的循環更改爲:

for ins in insti: 
    ins_name = ins.div.a["title"] 
    f.write(ins_name + "\n") 

由於你的代碼是你遍歷一切,寫最後一個因不被寫入循環。

但是,如果你問如何拿這個清單,然後取消這些,那麼更多的參與者和初學者,你需要保存的URL而不是標題,但我會把剩下的給你,因爲那種聽起來像家庭作業。