首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要帮助才能弄清楚如何循环通过indice

需要帮助才能弄清楚如何循环通过indice
EN

Stack Overflow用户
提问于 2019-01-03 22:07:02
回答 2查看 47关注 0票数 0

我正在做一个项目,围绕着收集大量的数据。我现在正在编写一个相当长的脚本,但是我的for循环遇到了问题。

我正试着从一个9行表中抓取信息。我尝试设置一个for循环,以便它从每一行中获取相同的信息。为了访问第一行,我将表拆分为一个列表。第一行从第三行开始。

这是我的密码:

当我运行它时,我得到一行"Aa“上的"AttributeError”。错误是:"'NoneType‘对象没有属性'text'“

当我将这一行代码单独输入控制台时,不会发生这种情况,我会得到所需的文本。当我取出for循环时,我能够刮掉第一个indaplaybox。

代码语言:javascript
复制
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup

my_url ='Myurl/=' + page

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

page_soup = soup(page_html, "html.parser")
boxes = page_soup.findAll("table",{"class":"TableTable tableBody"})
box = boxes[0]
playboxes = box.find_all('tr')
indaplaybox = playboxes[3]

filename = "QBS.csv"
f = open(filename, "a")

headers= "Aa, Ab, Ac, Ad\n"
f.write(headers)

for indaplaybox in playboxes:

    Aa = indaplaybox.find('td', attrs = {'style' : 'font-weight: bold;'}).text

    c = indaplaybox.find('td', attrs = {'class' : 'tablePlayName'})
    cl = c.text.split() 
    Ab = cl[0] + " " + cl[1]
    Ac = cl[2]
    Ad = indaplaybox.div.a.text



    print("Aa:" + Aa)
    print("Ab:" + Ab)
    print("Ac:" + Ac)
    print("Ad:" + Ad)


    with open (filename, "a") as myfile:
        myfile.write(Aa + "," + Ab + "," + Ac.replace(",", "|") + "," + Ad + "\n")
f.close()

我想要循环播放盒的指数3-11。

我对指数不太熟悉,所以我试着做这样的事情:

代码语言:javascript
复制
p = [str(i) for i in range (3,12)] 
indaplaybox = playboxes[p]

for indaplaybox in playboxes:

    rest of code

但这是行不通的,因为对大多数人来说最明显的是,列表索引必须是整数。

我真的需要一些帮助来思考如何让这个循环顺利地运行。谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-03 22:16:35

你可以:

方法1:

代码语言:javascript
复制
# p has all the values from playboxes at these indexes
p = [playboxes[i] for i in range(3,12)]

# now simple loop
for indaplaybox in p:
    ......

方法2:

代码语言:javascript
复制
for indaplaybox in playboxes[3:12]:
    ....
票数 2
EN

Stack Overflow用户

发布于 2019-01-03 22:12:21

代码语言:javascript
复制
p = [str(i) for i in range (3,12)] 
for i in p:
    indaplaybox = playboxes[i]
    ...
    rest of the code
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54030453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档