在python beautifulsoup中迭代多个div,输出到df,然后输出到csv

在python beautifulsoup中迭代多个div,输出到df,然后输出到csv,python,html,css,python-3.x,beautifulsoup,Python,Html,Css,Python 3.x,Beautifulsoup,试图为我学校的课程目录构建一个scraper/parser。第一步是将Coursicle数据库刮到csv,但我现在只能让它吐出第一行 下面是我试图解析的html片段: <div class="card back" style="display: block;"> <div class="addClass Back"> <i class="fa clicky fa-star Back"></i> <i

试图为我学校的课程目录构建一个scraper/parser。第一步是将Coursicle数据库刮到csv,但我现在只能让它吐出第一行

下面是我试图解析的html片段:

<div class="card back" style="display: block;">
    <div class="addClass Back"> 
        <i class="fa clicky fa-star Back"></i> 
        <i class="fa clicky fa-star-o Back"></i>  
        <i class="clicky icon-info-sign"></i>
    </div>
    <div class="courseNumberBack">
        <span class="subject">ANTH</span> <span class="number">54</span>-<span class="section">001</span>
        <div class="smallCourseInfo">

            <span class="abbrevTitle">First-Year Seminar: The Indians' New Worlds: Southeastern Histories from 1200 to 1800</span> 

        </div>
    </div>
    <hr class="faddedLine">

    <div class="courseNameBack"><div class="days">TuTh</div><br>

    <div class="smallCourseInfo"> <div class="instructor">Clara Scarry</div></div>

    <div class="time">3:30pm-4:45pm</div><br>
    <div class="smallCourseInfo"> <div class="building">Alumni 203 </div></div>


    <div class="genEds">HS US WB </div>


</div>
我试过这个:

cardback = (soup.find('div', class_='card back'))
result = dict(
    zip(
    [cardback.text for cardback in soup.select('span.subject')] , 
    [cardback.text for cardback in soup.select('span.number')] ,
    [cardback.text for cardback in soup.select('span.section')] , 
    [cardback.text for cardback in soup.select('span.abbrevTitle')] , 
    [cardback.text for carback in soup.select('div.days')] , 
    [cardback.text for carback in soup.select('div.instructor')] , 
    [cardback.text for carback in soup.select('div.time')] , 
    [cardback.text for carback in soup.select('div.building')] , 
    [cardback.text for carback in soup.select('div.genEds')] 
    )
    )
print(result) 
但这会返回以下错误:

ValueError: dictionary update sequence element #0 has length 9; 2 is required

有人有什么想法吗

在python中使用
print
时,有两个特殊的kw参数:
end
sep
<代码>结束参数正是您所需要的。它看起来像这样

print(something.text, ',', end=' ')

太好了,谢谢!代码已在上面更新。不过,它仍然只打印第一行。你把命名搞砸了一点。对于数字中的数字,您有一个类似于
的循环,并打印
数字
,但不是像这样的
数字
<代码>cardback=(soup.find('div',class='card back')用于cardback中的courseNumberBack。find_all('div',class='courseNumberBack'):用于courseNumberBack中的主题。find_all('span',class='subject'):用于主题中的主题:打印(subjects.text,,“,”,end=”)返回:“AttributeError:“NavigableString”对象没有属性“text”`我通过将.text更改为.string来消除错误,但它仍然只打印第一个结果。
缺少结束标记,类也由“”分隔,因此
回卡
是两个独立的类,所以你应该用
卡片背面
之类的东西。而像
for days in day
这样的内部循环是多余的,只需将它们替换为
print(day,…)
。除了上面提到的问题外,我看不到你的代码有任何问题,请详细描述你想做什么,以便我能帮助你
print(something.text, ',', end=' ')