【问题标题】:Can BeautifulSoup find elements with a matching value?BeautifulSoup 可以找到具有匹配值的元素吗?
【发布时间】:2016-10-28 22:57:28
【问题描述】:

我第一次使用网络爬虫,我正在使用 Beautiful Soup 来解析 JSON 文件并返回几个我发送到 CSV 的属性。

JSON 数组中的 status 变量是一个二进制值 (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")

【问题讨论】:

  • 你尝试过什么没用?
  • 添加 html 和你想要得到的东西,还有你为什么使用 bs4 来解析 json?

标签: python json beautifulsoup


【解决方案1】:

我可能遗漏了一些东西,但也许这会有所帮助:

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"])

【讨论】:

  • 你能把== 0:改成== "0":,我会接受你的回答吗?只需进行那个小调整,它现在就可以正常工作了。谢谢!
猜你喜欢
  • 1970-01-01
  • 2019-03-13
  • 1970-01-01
  • 2015-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-24
  • 1970-01-01
相关资源
最近更新 更多