Gunakan Excel\VBA untuk mengikis maklumat daripada halaman web
P粉555696738
P粉555696738 2023-09-02 18:48:32
0
1
809
<p>Saya cuba mengikis data dari halaman web, saya memerlukan 4 bit data, 2 daripadanya dapat saya dapatkan semula, tetapi 2 yang lain telah dibayangkan kepada saya. </p> <p>Ini bukan URL tetap, tetapi ia telah diambil daripada IE selepas ubah hala, jadi untuk contoh ini saya akan menggunakan: https://cpc.farnell.com/warton/microprint-p2010-15-32um-250g/solder-paste-15-32um-250g-pot/dp/SD02808 </p> <p>Saya berharap dapat gelaran:</p> <p><strong>Cetak Mikro P2010 Tanpa Bersih, Tampal Pateri Tanpa Plumbum, 15-32um, Balang 250g - MICROPRINT P2010 15-32UM, 250G</strong></p> <p>dan nombor bahagian pengilang</p> <p><strong>Cetak Mikro P2010 15-32UM, 250G</strong></p> <p>Saya telah menggunakan <strong>getElementbyID</strong> untuk mendapatkan gambaran keseluruhan produk/maklumat produk dan ia berfungsi dengan baik, tetapi medan teks lain nampaknya tidak berfungsi (saya melihat Xpath dan ia ralat keluar pada Objek) VBE diperlukan)</p> <p>Saya berjaya melaksanakan 2 elemen lain menggunakan: </p> <pre class="brush:php;toolbar:false;">Sub Mani() 'Isytiharkan pembolehubah Malapkan objWeb Sebagai Objek Malapkan objHTML Sebagai Objek Malapkan objElement Sebagai Objek Malapkan strData, StrData1 Sebagai String Tetapkan objWeb = CreateObject("internetexplorer.Application") str = "https://cpc.farnell.com/" objWeb.navigate str & Sel(1, 1).Nilai Manakala objWeb.Busy = Benar Wend FullURL = objWeb.LocationURL Julat("b2").Nilai = FullURL objWeb.navigate FullURL 'IE.Visible = Benar Manakala objWeb.Busy = Benar Wend Tetapkan objHTML = objWeb.document strData = objHTML.getElementById("pdpSection_FAndB").innerText ActiveSheet.Julat("C3").Nilai = strData strData = objHTML.getElementById("pdpSection_pdpProdDetails").innerText Set strData = Tiada apa-apa ActiveSheet.Julat("D3").Nilai = strData objWeb.Berhenti Tamat Sub</pra> <p>Muat semula URL adalah untuk navigasi sekitar ubah hala URL,</p> <p>https://cpc.farnell.com/SD02808</p> <p>Ubah hala ke URL utama</p> <p>https://cpc.farnell.com/warton/microprint-p2010-15-32um-250g/solder-paste-15-32um-250g-pot/dp/SD02808</p> <p>Saya mahu memasukkan nombor bahagian ke dalam A1, Excel gunakannya sebagai pembolehubah dalam VB, dan kemudian baca semula url penuh daripada contoh IE. Ini adalah isu warisan daripada cubaan menggunakan <strong>Dapatkan Data daripada Web</strong>, yang tidak berfungsi dengan baik kerana ralat skrip halaman, jadi contoh IE telah digunakan. </p>
P粉555696738
P粉555696738

membalas semua(1)
P粉517475670

IE sudah mati dan tidak boleh digunakan lagi. Walau bagaimanapun, anda juga boleh menggunakan URL yang dipendekkan https://cpc.farnell.com/SD02808 melalui xhr (permintaan HTTP XML). Kod berikut hanya menunjukkan cara membaca maklumat yang diperlukan daripada kod HTML yang dimuatkan. Semua perlindungan hilang.

Ralat objek dalam kod yang ditunjukkan di atas adalah kerana anda cuba menukar jenis data String 的变量设置为 Nothing,就像使用 Set 的对象变量一样strData = 无.

Sub GetCPCOfferInfos()

  Dim url As String
  Dim doc As Object
  
  Set doc = CreateObject("htmlFile")
  
  With CreateObject("MSXML2.XMLHTTP.6.0")
    url = "https://cpc.farnell.com/" & ActiveSheet.Cells(1, 1)
    .Open "GET", url, False
    .Send
    
    If .Status = 200 Then
      doc.body.innerHTML = .responseText
      
      ActiveSheet.Range("A3") = doc.getElementsByTagName("h1")(0).innertext _
                                & doc.getElementsByTagName("h2")(0).innertext 'Title
      ActiveSheet.Range("B3") = doc.getElementsByClassName("ManufacturerPartNumber")(0).innertext 'Manufacturer Part Number
      ActiveSheet.Range("C3") = doc.getElementById("pdpSection_FAndB").innertext 'Product Overview
      ActiveSheet.Range("D3") = doc.getElementById("pdpSection_pdpProdDetails").innertext 'Product Information
    Else
      MsgBox "Page not loaded. HTTP status " & .Status
    End If
  End With
End Sub
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!