#php #laravel #web-scraping
#php #laravel #очистка веб-страниц
Вопрос:
public function amazon_curl_request($url)
{
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_HTTPHEADER => array(
),
));
$response = curl_exec($curl);
curl_close($curl);
return $response;
}
public function amazon(Request $request)
{
$url = $request->input('link');
$parsed_link = parse_url($url);
$url = 'https://www.amazon.com/s?k=' .$url;
$url=str_replace(' ', ' ', $url);
$response = $this->amazon_curl_request($url);
return view('FrontEnd/amazon/result_page', compact('response'));
}
вот маршрут Route::get('/amazon/search', [AmazonController::class , 'amazon'])->name('search.amazon');
Мне нужно изменить URL, по умолчанию он перенаправляет меня сюда http://localhost:8000/s?k=bag
Но мне нужен этот URL-адрес, чтобы показать ответ http://localhost:8000/amazon-search/bag
Это сайт очистки Amazon.
Комментарии:
1. Добро пожаловать в SO .. что вы пробовали и какую ошибку вы получаете.?
2. Я пытаюсь отказаться от Amazon, он отлично работает без URL,, CURL ответ принудительно перенаправляет меня » localhost: 8000 / s? k = bag » здесь, «s? k =» это URL-запрос Amazon, но я хочу показать результат в моем пользовательском URL, например » localhost: 8000/ amazon-search /bag » здесь bag — строка поиска
3. тогда не `возвращайте $response;` это сохраняйте в переменной и используйте
bkade
для отображения данных4. поставьте это под сомнение не здесь
5. можете ли вы также добавить свои маршрутизаторы
Ответ №1:
используйте Http
, поскольку вы используете ссылку laravel 8 ref https://laravel.com/docs/8.x/http-client
use IlluminateSupportFacadesHttp;
public function amazon(Request $request)
{
$url = $request->input('link');
$parsed_link = parse_url($url);
$url = 'https://www.amazon.com/s?k=' .$url;
$url=str_replace(' ', ' ', $url);
$response = Http::get($url)->body(); // body() function will return html of url
echo $response // as it is already html of amazon or do some datamanipulation here
// return view('FrontEnd/amazon/result_page', compact('response'));
}
Комментарии:
1. Та же проблема… он показывает мне данные в » localhost: 8000 / s? k = bag » по этому URL-адресу.. но мне нужен » localhost: 8000 / ‘/ amazon / search » этот URL-адрес..