gpt4 book ai didi

php - 仅抓取页面标题

转载 作者:可可西里 更新时间:2023-11-01 01:06:10 26 4
gpt4 key购买 nike

我一直在网上四处寻找,希望这是可能的,我基本上只需要获得网页的标题,而不需要其他任何东西。

网络爬虫可能需要很长时间才能执行任务,因为它们必须在检查页面之前加载页面,这对于我想要实现的目标来说效率很低......这是我目前所拥有的

php代码

$url = 'http://www.ebay.com/itm/300702997750#ht_500wt_1156';
$str = file_get_contents($url);
$title = '';

if(strlen($str)>0){
preg_match("/\<title\>(.*)\<\/title\>/",$str,$titleArr);
$title = $titleArr[1];
}

我想知道是否可以只抓取页面的一部分(例如页面的前 2000 个字符)。

如有任何帮助,我们将不胜感激。

最佳答案

您可以使用 substr 只获取前 1000 个字符,或者,您可以使用

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/');
curl_setopt($ch, CURLOPT_RANGE, '0-500');
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);
echo $result;

那只会下载前 500 个字节。你可以通过运行像这样极其丑陋的垃圾代码来做实验:

$url = 'http://www.example.com/';
$range = array();
$repeats = 10;

function average($a){
return array_sum($a)/count($a) ;
}

for ($i=0;$i<$repeats;$i++) {
$time_start = microtime(true);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RANGE, '0-500');
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);

$time_end = microtime(true);
$time = $time_end - $time_start;
curl_close($ch);
$range[] = $time;
}
echo "With range: average = ".round(average($range),2)." seconds (Min: ".round(min($range),2).", Max: ".round(max($range),2).")\n";

$range = array();

for ($i=0;$i<$repeats;$i++) {
$time_start = microtime(true);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);

$time_end = microtime(true);
$time = $time_end - $time_start;
curl_close($ch);
$range[] = $time;
}
echo "Without range: average = ".round(average($range),2)." seconds (Min: ".round(min($range),2).", Max: ".round(max($range),2).")\n";

如果我在我的网站上运行它 ( http://www.focalstrategy.com/ ),我得到:

With range: average = 0.38 seconds (Min: 0.35, Max: 0.41)
Without range: average = 0.56 seconds (Min: 0.53, Max: 0.7)

针对http://en.wikipedia.org/wiki/PHP ,我得到:

With range: average = 0.11 seconds (Min: 0.05, Max: 0.5)
Without range: average = 0.48 seconds (Min: 0.34, Max: 0.78)

针对Stack Overflow我得到:

With range: average = 1.31 seconds (Min: 1.1, Max: 1.46)
Without range: average = 1.37 seconds (Min: 1.18, Max: 1.7)

反对eBay我得到:

With range: average = 1.75 seconds (Min: 1.56, Max: 1.99)
Without range: average = 1.74 seconds (Min: 1.51, Max: 2.14)

通过测试可以看出SO和eBay不支持范围请求。

总而言之,支持此功能的网站将获得提速,而那些不支持此功能的网站将不会,您只会获得整个代码。

关于php - 仅抓取页面标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10465177/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com