php - 如何在 laravel 中使用 symfony/dom-crawler 从 HTML 块中选择多个值
问题描述
我想使用 symfony dom-crawler 从页面爬取数据我想要什么数据我可以将它们全部显示在一个数组中,但我需要将它们存储在数据库中。这是页面的html代码
这是我的控制器代码 这是我的输出。在主页面里面你可以看到值 18、4 和 35、3 我需要这些值来将它们存储在数据库中,所以我该怎么做呢??。` public function numbers() { $url = " https://www. lotteryinformation.us/apps/freq-chart.php?state=FL&game=MUPB&tb_state=&tb_links=&tb_country=US&tb_lang=0&adsurl=&tbsite=&d= ."; $client = 新客户();$crawler = $client->request('GET', $url);
$tr_elements = $crawler->filterXPath('//body/center/table/tr/td');
// iterate over filter results
foreach ($tr_elements as $content)
{
$tds = array();
// create crawler instance for result
$crawler = new Crawler($content);
foreach ($crawler->filter('tr[valign="middle"]') as $node) {
$crawler = new Crawler($node);
foreach ($crawler->filter('td[class="td0"]') as $node)
{
// extract the value
$tds[] = $node->nodeValue;
//my code
}
foreach ($crawler->filter('td[class="td0"]')->eq(2) as $node)
{
// extract the value
$tds[] = $node->nodeValue;
//my code
}
}
dd($tds);
$rows[] = $tds;
}
dd($rows);
}`
解决方案
Well i have solved the problem by doing the code this way ` public function numbers()
{
$url = "https://www.lotteryinformation.us/apps/freq-chart.php?state=FL&game=MUPB&tb_state=&tb_links=&tb_country=US&tb_lang=0&adsurl=&tbsite=&d=.";
$client = new Client();
$crawler = $client->request('GET', $url);
$tr_elements = $crawler->filterXPath('//body/center/table/tr/td');
// iterate over filter results
foreach ($tr_elements as $content)
{
$tds = array();
// create crawler instance for result
$crawler = new Crawler($content);
//iterate again
/*$links_count =$crawler->filter('tr[valign="middle"]')->count();
return $links_count;*/
foreach ($crawler->filter('tr[valign="middle"]') as $node) {
$crawler = new Crawler($node);
foreach ($crawler->filter('td[class="td0"]')->eq(0) as $node)
{
$rank = $crawler->filter('td[class="td0"]')->eq(1)->text();
$tds[] = $rank;
$hit = $crawler->filter('td[class="td0"]')->eq(2)->text();
$tds[] = $hit;
$frequency_table = new FrequencyTable;
$frequency_table->rank = $rank;
$frequency_table->hit= $hit;
$frequency_table->save();
/* $tds[] = $node->nodeValue;*/
}
}
dd($tds);
}
}` and it is what exactly i wanted. Thank you.
推荐阅读
- linux - 将静态变量传递给 GNU Parallel
- python - 使用python3中的正则表达式从多行测试中提取重复模式
- mysql - 用于检索多个值作为数组的mysql查询
- html - 角度未正确环绕文本
- excel - 在包含单词 vba excel 的行之前插入行
- javascript - 不直接导出上下文对象的原因是什么?
- javascript - 尝试从字符串返回字符数和数字时出现“对象可能为空”错误
- ios - iOS - 当应用程序已经在执行视频通话或使用 AVPlayer 播放任何视频时,无法获得推送通知声音
- blockchain - 如何在 BitGo API 中获取硬币的当前区块高度?
- python - 重定向标准输出时的 Input() 缓冲区