【问题标题】:How do i extract the satewise data of coronavirus cases in INDIA(name of sate, affected and dead) from this website(https://www.mohfw.gov.in/)我如何从这个网站(https://www.mohfw.gov.in/)中提取印度冠状病毒病例的州数据(州名、受影响和死亡)
【发布时间】:2020-03-26 04:17:15
【问题描述】:

这是从我的数据所在的类中提取 html 数据的代码。但是我如何提取所需的数据(状态数据),因为它没有按顺序给出 website

import requests
import cloudscraper
from bs4 import BeautifulSoup
import re
import pandas as pd
import time
import datetime
scraper = cloudscraper.create_scraper()
html = scraper.get("https://www.mohfw.gov.in/").text
data = BeautifulSoup(html, 'html.parser')
li=data.find_all(class_='table-responsive')
li

【问题讨论】:

标签: python web-scraping beautifulsoup data-science


【解决方案1】:
import pandas as pd

df = pd.read_html("https://www.mohfw.gov.in/")[-1]

df.to_csv("data.csv", index=False)

输出:Check-Online

【讨论】:

  • 谢谢,但我想要印度 covid19 病例的各州数据
  • [2]改成[-1]
【解决方案2】:

你用熊猫怎么样。它被组织并直接创建一个df。例如,在您的情况下:-

import requests
import pandas as pd
url = 'https://www.mohfw.gov.in/'
html = requests.get(url).content
df_list = pd.read_html(html)
df = df_list[-1]
print(df)

【讨论】:

  • 如何将表格中的数据组织成 .csv 文件
  • 尝试 df.to_csv(file_name, encoding='utf-8')。另外,如果您认为问题已解决,请单击我的答案左侧的复选标记来接受答案。并随时为答案投票。
  • @PrakharJhudele 这里没有理由使用requests,因为pandas read_html 可以代表您提出请求。
  • 同意你@αԋɱҽԃαмєяιcαη。谢谢你的建议。 (Y)
  • 感谢您的回复,但列表未按顺序排列,如果可以将表格按原样提取到 csv 文件中,将会很有帮助
【解决方案3】:

数据被包裹在一个 tbody 元素中。您可以使用以下scrapy代码:

import scrapy
tables= response.xpath("(//tbody)[7]")
for data in tables:
    date = data.xpath("..//tr/td/text()")
    title_text = data.xpath("(//tbody)[7]/tr/td/a/text()")
    title_links = data.xpath("(//tbody)[7]/tr/td/a/@href")

    yield {
        'Date': date,
        'Title': title_text,
        'Links': title_links,
    }

【讨论】:

    猜你喜欢
    • 2020-06-21
    • 2020-07-02
    • 2020-06-18
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 2020-10-21
    相关资源
    最近更新 更多