简体   繁体   English

PHP curl和DOM获取表和tds的内容

[英]PHP curl and DOM to get the content of the tables and tds

在此处输入图片说明 I am trying to make a website that connects to a catalogue of car parts and getting the data of a selected vehicle model. 我正在尝试建立一个连接到汽车零件目录的网站,并获取所选车辆模型的数据。

I have to outpunt in the page all the tables that i get and pick the vehicle part code for example "PA7458" and put it in an array.But im a blocked, i'm not good with CURL and parsing in general. 我必须在页面中拿出所有得到的表,并选择车辆部件代码,例如“ PA7458”,并将其放入数组中。但是我被阻止了,我对CURL和一般解析不太好。

If is there any other solution rather than using curl, feel free to tell me it! 如果有其他解决方案而不是使用curl,请随时告诉我! Thanks for help!! 感谢帮助!! :) :)

Here is my code: 这是我的代码:

<?php
  $curl3 = curl_init();
  curl_setopt($curl3, CURLOPT_URL, "http://www.sogefifilterdivision.com/catalogues/FO/scripts/cat_rech_vehicules.php?zone=FR&catalogue=CPF&lang=IT&vehicule_marque=FIAT&vehicule_modele=Punto+Evo+1.3+Multijet+16V");
  curl_setopt($curl3, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($curl3, CURLOPT_CONNECTTIMEOUT, 10);
  $str = curl_exec($curl3);
  curl_close($curl3);

  $dom = new DOMDocument();
  $dom->preserveWhiteSpace = false;
  @$dom->loadHTML($str);

  $tables = $dom->getElementsByTagName('table');

  echo "Found : ".$tables->length. " items";

  $i = 0;
  $contenuto="";
  while($table = $tables->item($i++))
  {
    $contenuto=$dom->saveHTML($table);

    if (strpos($contenuto, 'Motore') !== false) {
        // echo "<div class='row'>";
        echo "<br><br><div class='col-md-6' style='border:1px solid red;'>";
    }

    if (strpos($contenuto, 'Filtro') !== false || strpos($contenuto, 'Olio') !== false || strpos($contenuto, 'Gasolio') !== false || strpos($contenuto, 'Aria') !== false) {
        echo "<div class='col-md-6' style='border:1px solid black;'>";
    }

    $anchor = $table->nodeValue;
    echo "<td>".$contenuto."</td>";

    if (strpos($contenuto, 'Filtro') !== false || strpos($contenuto, 'Olio') !== false || strpos($contenuto, 'Gasolio') !== false || strpos($contenuto, 'Aria') !== false) {
        echo "</div>";
    }

    if (strpos($contenuto, 'Motore') !== false) {
        echo "</div>";
    }
  }
?>

This is the output, but i want to have a table with rows and columns and edit the anchors. 这是输出,但是我想要一个具有行和列的表格并编辑锚点。

//simple html dom //简单的html dom

 i am here now, but how i can buld a table? include('simple_html_dom.php'); $curl3 = curl_init(); curl_setopt($curl3, CURLOPT_URL, "http://www.sogefifilterdivision.com/catalogues/FO/scripts/cat_rech_vehicules.php?zone=FR&catalogue=CPF&lang=IT&vehicule_marque=FIAT&vehicule_modele=Punto+Evo+1.3+Multijet+16V"); curl_setopt($curl3, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl3, CURLOPT_CONNECTTIMEOUT, 10); $html = str_get_html(curl_exec($curl3)); foreach($html->find('table tr td') as $e){ $arr[] = trim($e->innertext); } for ($i=0; $i < COUNT($arr) ; $i++) { echo $arr[$i].": ".$arr[$i+1]."<br>"; $i++; } 

OUTPUT ON THE PAGE: Motore : 199A9.000 (Euro4) Potenza : 55KW(75PS/HP) Cilindrata : 1248 Inizio : 10/09 Fine commercializzazione : 02/12 Filtro: Abbreviazioni CPF: Istruzioni Aria : 页面上的输出:Motore:199A9.000(Euro4)Potenza:55KW(75PS / HP)Cilindrata:1248 Inizio:10/09精良的商业广告位:02/12 Filtro:Abbreviazioni CPF:Istruzioni Aria:
PA7506 : PA7506:
Filtro abitacolo : Filtro abitacolo:
PC8170 : PC8170:
Filtro abitacolo : anti-odore PCK8194 : Filtro Abitacolo:防臭PCK8194:
Gasolio : 加索利奥:
FP5760HWS : FP5760HWS:
Olio : montaggio PURFLUX FA5677ECO : 奥利奥:montaggio PURFLUX FA5677ECO:
Olio : montaggio UFI FA5766ECO : 奥利奥:montaggio UFI FA5766ECO:
Motore : 199A3.000 Potenza : 66KW(90PS/HP) Cilindrata : 1248 Inizio : 10/09 Fine commercializzazione : 02/12 Filtro: Abbreviazioni CPF: Istruzioni Aria : 摩托:199A3.000波坦察:66KW(90PS / HP)西林德拉塔:1248伊尼齐奥:10/09精商业霜霉菌:02/12菲尔特罗:Abbreviazioni CPF:Istruzioni Aria:
PA7701 : PA7701:
Filtro abitacolo : Filtro abitacolo:
PC8170 : PC8170:
Filtro abitacolo : anti-odore PCK8194 : Filtro Abitacolo:防臭PCK8194:
Gasolio : 加索利奥:
FP5759HWS : FP5759HWS:
Olio : Euro 5 奥利奥:欧元5
FA5919ECO : FA5919ECO:
Olio : Euro 4 montaggio PURFLUX FA5677ECO : 奥利奥:欧元4 montaggio PURFLUX FA5677ECO:
Olio : Euro 4 montaggio UFI FA5766ECO : 奥利奥:欧元4 montaggio UFI FA5766ECO:
Motore : 199B1.000 Potenza : 70KW(95PS/HP) Cilindrata : 1248 Inizio : 10/09 Fine commercializzazione : 02/12 Filtro: Abbreviazioni CPF: Istruzioni Aria : 摩托:199B1.000波坦察:70KW(95PS / HP)汽缸:1248伊尼齐奥:10/09精良的商业汽车油:02/12菲尔特罗(Filtro):Abbreviazioni CPF:Istruzioni Aria:
PA7701 : PA7701:
Filtro abitacolo : Filtro abitacolo:
PC8170 : PC8170:
Filtro abitacolo : anti-odore PCK8194 : Filtro Abitacolo:防臭PCK8194:
Gasolio : 加索利奥:
FP5759HWS : FP5759HWS:
Olio : Euro 5 奥利奥:欧元5
FA5919ECO : FA5919ECO:
Motore : 199A9.000 (Euro5) Potenza : 55KW(75PS/HP) Cilindrata : 1248 Inizio : 10/09 Fine commercializzazione : 摩托:199A9.000(Euro5)波坦察:55KW(75PS / HP)汽缸:1248伊尼齐奥:10/09精良的商业包装:
Filtro: Abbreviazioni CPF: Istruzioni Aria : Filtro:Abbreviazioni CPF:Istruzioni Aria:
PA7701 : PA7701:
Filtro abitacolo : Filtro abitacolo:
PC8170 : PC8170:
Filtro abitacolo : anti-odore PCK8194 : Filtro Abitacolo:防臭PCK8194:
Gasolio : 加索利奥:
FP5759HWS : FP5759HWS:
Olio : 奥利奥:
FA5919ECO : FA5919ECO:


 echo "<table style='border:1px solid black;'>"; for ($i=0; $i < COUNT($arr) ; $i++) { //echo $arr[$i].": ".$arr[$i+1]."<br>"; echo "<tr>"; echo "<td>".$arr[$i]."</td>"; echo "</tr>"; $i++; } echo "</table>"; 

在此处输入图片说明

if you would use the "html dom parser" it will be much easier , Curl will return a string containing the HTML right, Just use the quick start sample 如果您将使用“ html dom解析器”,它将更加容易,Curl将返回包含HTML权限的字符串,只需使用快速入门示例

$html = str_get_html(curl_exec($ch));

try the following : 尝试以下方法:

foreach($html->find('.tabtxtgras') as $key => $e){
    $arr[] = trim($e->innertext);
    $arr2[] = trim($html->find('.tabtxt')[$key]->innertext);
  }

echo "<table style='border:1px solid black;'>";
  for ($i=0; $i < COUNT($arr) ; $i++) {

   //echo $arr[$i].": ".$arr[$i+1]."<br>";
   echo "<tr>";
    echo "<td>".$arr[$i]."</td>";
    echo "<td>".$arr2[$i]."</td>";
   echo "</tr>";

   $i++;
  }
  echo "</table>"; 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM