2016-06-27 5 views
0

私は初めてWebスクレーパーで作業しています。私はBeautiful Soupを使用してJSONファイルを解析し、CSVに送信するいくつかの属性を返します。BeautifulSoupは値が一致する要素を見つけることができますか?

status変数は、JSON配列に、バイナリ値(0/1)です。ステータスが0の配列だけを返したいと思います。それは実現可能か?

"""soup = BeautifulSoup(html) 
table = soup.find() 
print soup.prettify()""" 
js_data = json.loads(html) 
Attraction = [] 
event = [] 
status = [] 
for doc in js_data["response"]["docs"]: 
    Attraction.append(doc["Attraction"]) 
    event.append(doc["PostProcessedData"]["Onsales"]["event"]["date"]) 
    status.append(doc["PostProcessedData"]["Onsales"]["status"]) 
with open("out.csv","w") as f: 
    datas = zip(Attraction,event,status) 
    keys = ["Attraction","event","status"] 
    f.write(";".join(keys)) 
    for data in datas: 
     f.write(",".join([str(k).replace(",",";").replace("<br>"," ") for k in data])) 
     f.write("\n") 
+0

は、あなたがしようとした動作しませんでしたか? –

+0

htmlを追加して取得しようとしているもの、なぜjsonを構文解析するのにbs4を使用していますか? –

答えて

0

私は何かが欠けていることかもしれないが、多分これは役立ちます:

for doc in js_data["response"]["docs"]: 
    if doc["PostProcessedData"]["Onsales"]["status"] == "0": 
     Attraction.append(doc["Attraction"]) 
     event.append(doc["PostProcessedData"]["Onsales"]["event"]["date"]) 
     status.append(doc["PostProcessedData"]["Onsales"]["status"]) 
+1

'== 0:'を '==" 0 ":'に変更できますか?私はあなたの答えを受け入れるでしょうか?ちょうどその小さな微調整をしなければならなかった、それは今正しく動作します。ありがとう! – darkginger

+0

完了。どういたしまして – Ryan

関連する問題