使用 Symfony DomCrawler 获取 Table 行
Using Symfony DomCrawler to get Table Rows
我正在尝试使用 DomCrawler 访问网页上的 table,但我不确定我使用的方法是否正确。下面的示例指向一个 Yahoo 站点并使用目标 table 的 XPath。理想情况下,我将遍历数据的 s,但现在我似乎无法弄清楚如何让 DomCrawler 找到这个 table 或者我是否应该使用不同的方法。例如,
use Goutte\Client;
$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()
更新:
所以使用过滤器查询 without tbody
,因为这个标签在 Google Chrome 检查器中自动创建并且实际上不存在,例如(您可以检查 - 只需打开 [Ctrl+U] 页面的原始 html 代码)。
//*[@id="yfncsumtab"]/tbody/tr[2]/td[1]/table[2]/tbody/tr/td/table/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"
我正在尝试使用 DomCrawler 访问网页上的 table,但我不确定我使用的方法是否正确。下面的示例指向一个 Yahoo 站点并使用目标 table 的 XPath。理想情况下,我将遍历数据的 s,但现在我似乎无法弄清楚如何让 DomCrawler 找到这个 table 或者我是否应该使用不同的方法。例如,
use Goutte\Client;
$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()
更新:
所以使用过滤器查询 without tbody
,因为这个标签在 Google Chrome 检查器中自动创建并且实际上不存在,例如(您可以检查 - 只需打开 [Ctrl+U] 页面的原始 html 代码)。
//*[@id="yfncsumtab"]/tbody/tr[2]/td[1]/table[2]/
tbody/tr/td/table/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"