Utilisez Excel\VBA pour extraire des informations des pages Web
P粉555696738
P粉555696738 2023-09-02 18:48:32
0
1
862
<p>J'essaie de récupérer des données d'une page Web. J'ai besoin de 4 bits de données, dont 2 que j'ai pu récupérer, mais les 2 autres m'ont été suggérés. </p> <p>Ceci n'est pas une URL fixe, mais elle a été récupérée depuis IE après la redirection, donc pour cet exemple, j'utiliserai : https://cpc.farnell.com/warton/microprint-p2010-15-32um-250g/solder-paste-15-32um-250g-pot/dp/SD02808 </p> <p>J'espère obtenir le titre :</p> <p><strong>Pâte à souder sans nettoyage et sans plomb Microprint P2010, 15-32um, pot de 250 g - MICROPRINT P2010 15-32UM, 250G</strong></p> <p>et numéro de pièce du fabricant</p> <p><strong>Microprint P2010 15-32UM, 250G</strong></p> <p>J'utilise <strong>getElementbyID</strong> pour obtenir la présentation du produit/les informations sur le produit et cela fonctionne très bien, mais les autres champs de texte ne semblent pas fonctionner (j'ai regardé le Xpath et il erreurs sur l'objet) VBE requis)</p> <p>J'ai implémenté avec succès les 2 autres éléments en utilisant : </p> <pre class="brush:php;toolbar:false;">Sub Mani() 'Déclarer des variables Dim objWeb en tant qu'objet Dim objHTML en tant qu'objet Dim objElement en tant qu'objet Dim strData, StrData1 comme chaîne Définir objWeb = CreateObject("internetexplorer.Application") str = "https://cpc.farnell.com/" objWeb.navigate str & Cells(1, 1).Valeur Tandis que objWeb.Busy = True Wende FullURL = objWeb.LocationURL Range("b2").Value = FullURL objWeb.navigate FullURL 'IE.Visible = Vrai Tandis que objWeb.Busy = True Wende Définir objHTML = objWeb.document strData = objHTML.getElementById("pdpSection_FAndB").innerText ActiveSheet.Range("C3").Value = strData strData = objHTML.getElementById("pdpSection_pdpProdDetails").innerText Définir strData = Rien ActiveSheet.Range("D3").Value = strData objWeb.Quitter Fin du sous</pré> <p>Le rechargement d'URL est destiné à la navigation autour des redirections d'URL,</p> <p>https://cpc.farnell.com/SD02808</p> <p>Redirection vers l'URL principale</p> <p>https://cpc.farnell.com/warton/microprint-p2010-15-32um-250g/solder-paste-15-32um-250g-pot/dp/SD02808</p> <p>Je souhaite saisir le numéro de pièce dans A1, Excel l'utilise comme variable dans VB, puis relire l'URL complète à partir de l'instance IE. Il s'agit d'un problème hérité de la tentative d'utilisation de <strong>Obtenir des données à partir du Web</strong>, qui n'a pas bien fonctionné en raison d'une erreur de script de page. Une instance d'IE a donc été utilisée. </p>
P粉555696738
P粉555696738

répondre à tous(1)
P粉517475670

IE est mort et ne devrait plus être utilisé. Cependant, il est également possible d'utiliser l'URL raccourcie https://cpc.farnell.com/SD02808 via xhr (requête HTTP XML). Le code suivant montre uniquement comment lire les informations requises à partir du code HTML chargé. Toutes les garanties manquent.

L'erreur d'objet dans le code affiché ci-dessus est due au fait que vous essayez de convertir le type de données 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
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal