HTMLParser.feed (html) не работает должным образом - PullRequest
0 голосов
/ 02 апреля 2020

Я новичок в веб-сканировании и хочу создать веб-сканер на python, который получает определенные данные о коронавирусе с компакт-диска C, что сейчас просто общее число случаев в США. Ниже приведен мой код

from create import *
from data_finder import *
import pandas as pd
import urllib.request
import ssl


def crawl(pg_url):
    html_string=''
    try:
        ssl._create_default_https_context = ssl._create_unverified_context
        req = urllib.request.Request(pg_url)
        response = urllib.request.urlopen(req)
        the_page = response.read()
        html_string=the_page.decode("utf-8")
        print(html_string)
        finder = data_finder()#my own function that select certain elements from  <td> tag 
        finder.feed(html_string)
        create_dir('corona_data')
        df=pd.DataFrame(finder.dict.items(),columns=['Number of Days','Total Cases'])
        df.to_csv('./corona_data/data.csv', sep='\t', encoding='utf-8')
    except:
        print('bad page')

crawl('https://www.cdc.gov/TemplatePackage/contrib/widgets/cdcCharts/iframe.html?chost=www.cdc.gov&cpath=/coronavirus/2019-ncov/cases-updates/cases-in-us.html&csearch=&chash=&ctitle=Cases%20in%20U.S.%20%7C%20CDC&wn=cdcCharts&wf=/TemplatePackage/contrib/widgets/cdcCharts/&wid=cdcCharts2&mMode=widget&mPage=&mChannel=&host=www.cdc.gov&displayMode=wcms&configUrl=/coronavirus/2019-ncov/cases-updates/total-cases-onset.json&class=mb-3')

Моя проблема в том, что я проверяю элементы tr и td в chrome, однако они не отображаются, когда я выполняю urlopen, затем читаю и затем декодирую. После некоторого поиска я обнаружил, что проблема может быть связана с таблицей данных, созданной с использованием javascript вместо простого HTML. Поэтому мне интересно, как мне это исправить, чтобы я мог предварительно загрузить всю страницу, проверить и скопировать все HTML, как я делал, когда просматривал, а затем проанализировать себя.

...