私は、以下のVBAコードを使用して郡、母集団、および中央値をWebスクレープしようとしました。これは動作しますが、次の問題が発生しています:以下のブロック引用符で囲まれた項目番号が異なります。つまり、特定の郵便番号では、誤ったデータポイントを取得します。Excel VBA Web Scrape - getElementsbyTagName.Item番号は一定ではありません
私は、可変項目番号について調査しましたが、近づくだけの場合は、クラス名で要素を拾い出し、collectionを取得しています。しかし、私が働いているHTMLは以下を参照してください、クラス名を持っていない:「郡:」
は、それが最初に文字列を見つけることは可能ですし、その後ののinnerTextを取得TagNameはtd?また、テーブル全体を返すことも考えましたが、データは2つの異なるテーブル内でホストされています。ご覧のとおり、私はいくつかのアイデアを持っていますが、良い例が見つからないようですので、コードの面では分かりません。
Sub ZipCodeScrape()
Set ZipCodeRange = Range("C2", Range("C2").End(xlDown))
Dim IE As Object
Set IE = New InternetExplorer
Dim url As String
url = "https://www.unitedstateszipcodes.org/"
Dim County As String
Dim Population As String
Dim MedianHomeVal As String
Dim HTMLdoc As HTMLDocument
For Each cell In ZipCodeRange
IE.navigate (url & cell.Value)
'Allows IE to load
While IE.readyState <> 4
DoEvents
Wend
Set HTMLdoc = IE.document
County = HTMLdoc.getElementsByTagName("td").Item(2).innerText
Population = HTMLdoc.getElementsByTagName("td").Item(6).innerText
MedianHomeVal = HTMLdoc.getElementsByTagName("td").Item(12).innerText
cell.Offset(0, 1) = County
cell.Offset(0, 2) = Population
cell.Offset(0, 3) = MedianHomeVal
Next cell
End Sub
データクエリを使用してページを空白のシートにインポートし、セル参照を使用してデータにアクセスします。 'Alt + D、D、W'。 – ACatInLove