【问题标题】:Symfony DomCrawler link contains searched HTMLSymfony DomCrawler 链接包含搜索到的 HTML
【发布时间】:2017-03-31 22:57:26
【问题描述】:

这是我在空闲时间做的一个项目,以帮助减少我在公司重复点击所花费的时间,所以我希望它没有冒犯或被禁止。

Page to be scraped

我只想要第二个链接的 URI,因为它是精确的搜索匹配。第一个还包含 -V1331 后缀。

错误:

<a href="http://pdb2.turck.de/en/DE/products/0000000000011ba40002003a">
    <strong> Product&nbsp;BI1-EH04-AP6X-V1331</strong> (HTML, 48.7K)<br>
    Product&nbsp;<strong>BI1-EH04-AP6X-V1331</strong> 
    Click to enlarge Inductive sensor Order number: &nbsp;4608440 Smooth barrel, Ø 4 mm Stainless steel, 1.4427 SO DC 3-wire, 10…30 VDC NO contact, PNP
</a>

对:

<a href="http://pdb2.turck.de/en/DE/products/000000000001ecee0003003a">
    <strong> Product&nbsp;BI1-EH04-AP6X</strong> (HTML, 48.6K)<br>
    Product&nbsp;<strong>BI1-EH04-AP6X</strong> 
    Click to enlarge Inductive sensor Order number: &nbsp;4609540 Smooth barrel, Ø 4 mm Stainless steel, 1.4427 SO DC 3-wire, 10…30 VDC NO contact, PNP output
</a>

我试过这个:

$search = 'BI1-EH04-AP6X';
$crawler = Goutte::request('GET', 'http://www.turck.de/en/search.php?q_simple=' . $search);
return $crawler->selectLink(' Product&nbsp;' . $search)->link()->getUri();

但是,这显然失败了,因为&lt;a&gt; 元素内有很多 HTML,因此没有匹配到链接。

请不要与 Laravel 的 Goutte facade 混淆,它是 Symfony Dom Crawler 方法。

如何获取第二个链接的URI?是否有匹配链接的方法,如果它包含搜索 HTML sn-p(在我们的例子中为 &gt; Product&amp;nbsp;BI1-EH04-AP6X&lt;)?

【问题讨论】:

    标签: html symfony domcrawler


    【解决方案1】:

    我通过试验 XPath 帮助程序扩展和下面提到的 SO 页面中的信息找到了答案。

    Locating the node by value containing whitespaces using XPath

    $search = 'BI1-EH04-AP6X';
    $crawler = Goutte::request('GET', 'http://www.turck.de/en/search.php?q_simple=' . $search);
    $crawler->filterXPath('//strong[normalize-space(text())="' . $search . '"]')->each(function ($node) {
    print $node->parents()->link()->getUri()."\n";
    });
    

    它确实需要更多优化,但现在还可以。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-15
      • 1970-01-01
      相关资源
      最近更新 更多