2017-09-13 90 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而不是标题,但我会把剩下的给你,因为那种听起来像家庭作业。