【问题标题】:trying to make a csv file from scrape data from Python试图从 Python 中抓取数据创建一个 csv 文件
【发布时间】:2017-06-18 20:24:57
【问题描述】:

我是 Python 和任何类型的编码新手……我希望这不是一个简单的问题。

我正在尝试从网络上抓取数据制作一个 csv 文件。

AttributeError: 'Doctype' 对象没有属性 'find_all'

但是这个错误不会消失!

这是完整的代码

import bs4 as bs
import urllib.request


req = urllib.request.Request('http://www.mobygames.com/game/tom-clancys-rainbow-six-siege',headers={'User-Agent': 'Mozilla/5.0'})

sauce = urllib.request.urlopen(req).read()

soup = bs.BeautifulSoup(sauce,'lxml')

scores = soup.find_all("div")

filename = "scores1.csv"
f = open(filename, "w")

headers = "Hi, Med, Low\n"

f.write(headers)

for scores in soup:
    scoreHi = scores.find_all("div", {"class":"scoreHi"})
    Hi = scoreHi[0].text
    scoreMed = scores.find_all("div", {"class":"scoreMed"})
    Med = scoreMed[0].text
    scoreLow = scores.find_all("div", {"class":"scoreLow"})
    Low = scoreLow[0].text

    print ("Hi: " + Hi)

    print ("Med: " + Med)

    print ("Low: "+ Low)

    f.write(Hi + "," + Med.replace(",","|") + "," + Low + "\n")


f.close() 

【问题讨论】:

    标签: python export export-to-csv


    【解决方案1】:

    您首先分配分数:

    scores = soup.find_all("div")
    

    这很好,但你应该回顾一下这些分数:

    for score in scores:
        scoreHi = score.find_all("div", {"class":"scoreHi"})
        Hi = scoreHi[0].text
        scoreMed = score.find_all("div", {"class":"scoreMed"})
        Med = scoreMed[0].text
        scoreLow = score.find_all("div", {"class":"scoreLow"})
        Low = scoreLow[0].text
    

    尝试使用以下方法迭代 Doc(即soup):

    for scores in soup: 
    

    没有意义。

    【讨论】:

    • 谢谢!我不知道我是怎么想念的!
    • 如果此答案解决了您的问题,请考虑通过单击答案旁边的 ✔(复选标记)接受。这就是其他人知道您的问题已解决的方式,而无需阅读 cmets。它还改变了问题的外观和列表中的这个答案。如果出现更好的答案,您可以随时更改已接受的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-08
    • 1970-01-01
    • 2011-02-06
    • 2021-08-30
    • 2020-10-05
    • 1970-01-01
    相关资源
    最近更新 更多