一直在我的大脑里,不知道这个问题。我正在抓取ESPN和检索三件事:会议,学校在会议和团队链接到他们各自的ESPN主页。下面是设置:BeautifulSoup和Python问题
source = urllib.request.urlopen('http://www.espn.com/college-
football/teams').read()
soup = bs.BeautifulSoup(source, "lxml")
page_source = soup.find_all("div", {"class": "mod-container mod-open-list
mod-teams-list-medium mod-no-footer"})
conference_list = []
team_list = []
team_link_list = []
下面的代码工作,以填补我的三个名单没有问题:
for conference in page_source:
conference_list.append(conference.div.h4.text)
for team in conference.find_all("a", {"class": "bi"}):
team_list.append(team.text)
team_link_list.append(team.get('href'))
的问题是,虽然这证明我刮正确的,这是没有帮助用于将信息添加到sqlite数据库。我需要逐步完成每个会议,然后将他们各自的会议仅添加到数据库,以便查找参加什么会议的团队。所以我觉得,我只需要通过一步的page_source
像下面的每个元素正确地做到这一点:
index = 0
while len(page_source) > index:
conference = page_source[index].div.h4.text
for team in page_source[index].find_all("a", {"class": "bi"}):
team_list.append(team.text)
team_link_list.append(team.get('href'))
{MAKE A DICT OF SCHOOLS:LINK WITH ZIP}
{ADD CONFERENCE VAR AND DICT TO DB}
index += 1
我省略了ORM步骤,但你的想法。我将单个会议名称添加到conference
变量,然后构建两个列表并在其上运行zip
将它们变成字典,然后运行INSERT
SQL命令将其添加到数据库中。然后,索引增加,我们再次做同样的事情,直到我们到达page_source
列表的末尾,这意味着我们将每个会议/团队/链接添加到我们报废的分贝,并且他们都是通过会议添加的。
但是,它不起作用。我从while len(page_source) > index:
循环中得到了一些非常糟糕的输出。我测试过,我的基本前提作品,如果我手动更改索引,而不象page_source[0]
或page_source[1]
增量...
不过,这并不正确地page_source[index]
一些奇怪的原因工作。我做错了什么?
我不知道你在做什么,但它的奇妙递增'index'一个循环,内部'for'表达式中出现'index'。你会跳过'page_source'中的许多项目,因为每次迭代while循环时,'index'已经增加了一个未知的数量,可能超过1(也许更多)。你是否认为'index + = 1'缩小了一级,这会把它放在for循环之外? –
@PaulCornelius啊我明白你的意思了。我敢打赌,这是问题的一部分(或*部分)。感谢那! – Biggen
@PaulCornelius这样做!愚蠢的是,我几小时后盯着屏幕想念我做错了什么。如果您想将其作为答案提交,我会将其授予您。再次感谢您的证明! – Biggen