使用Symfony DomCrawler获取表行



我试图使用DomCrawler访问网页上的表,我不确定我使用的是正确的方法。下面的示例指向一个Yahoo站点,并使用目标表的XPath。理想情况下,我将遍历s来获取数据,但现在我似乎不知道如何让DomCrawler找到这个表,或者是否应该使用不同的方法。例如,

use GoutteClient;
$client = new Client();
$baseURL = 'http://finance.yahoo.com/'; 
$urlEndpoint = 'q/pr?s=MSFT+Profile';
$domSelector = '//*[@id="yfncsumtab"]/tbody/tr[2]/td[1]/table[2]/tbody/tr/td/table/tbody'; 
$crawler = $client->request('GET', $baseURL . $urlEndpoint); 
$message = $crawler->filterXPath($domSelector)->text(); 
dd($message);

任何指示都是赞赏的!

我不知道goutte,但你应该做下一步:获取响应体,并将其传递给爬虫。

...
$html = $response->getBody(); // or $response->getContent() - it depends on tool what you are using 
$crawler = new Crawler();
$crawler->addHtmlContent($html);
// use $crawler->filter() or $crawler->filterXPath()

更新:

所以使用过滤器查询没有 tbody,因为这个标签自动创建在谷歌浏览器检查器和真的不存在,例如(你可以检查-只是打开页面的原始html代码[Ctrl+U])。

//* [@ id = " yfncsumtab "]/身体/tr [2]/td[1][2]/表/tbody/

/tr/td/表tbody
$crawler->filterXPath('//*[@id="yfncsumtab"]/tr[2]/td[1]/table[2]/tr/td/table')->text();

你会得到你想要的:

string(101) "Index Membership:N/ASector:TechnologyIndustry:Business Software & ServicesFull Time Employees:118,000"

最新更新