আমি কীভাবে পিএইচপিতে কোনও ওয়েব পৃষ্ঠার এইচটিএমএল কোড পাব?


91

আমি পিএইচপি-তে একটি লিঙ্কের (ওয়েব পৃষ্ঠা) HTML কোডটি পুনরুদ্ধার করতে চাই। উদাহরণস্বরূপ, লিঙ্কটি যদি হয়

/programming/ask

তারপরে আমি যে পৃষ্ঠার পরিবেশন করা হয়েছে তার HTML কোডটি চাই। আমি এই এইচটিএমএল কোডটি পুনরুদ্ধার করতে এবং এটি একটি পিএইচপি ভেরিয়েবলে সঞ্চয় করতে চাই।

কিভাবে আমি এটি করতে পারব?


আপনি দয়া করে এটি আরও ব্যাখ্যা করতে পারেন। আপনি কোনও প্রদত্ত ইউআরএলটিতে একটি ওয়েব অনুরোধ প্রেরণ করতে চান এবং আমার ধারণা মতো পরিবর্তনশীলটির প্রতিক্রিয়াটি পড়তে চান?
চথুরাঙ্গ চন্দ্রশেখর

হ্যাঁ, একই জিনিসটি আমি চাই, আমি সেই ওয়েব অনুরোধে ফেরানো একটি চলকটিতে পুরো উত্স কোডটি চাই।
প্রশান্ত

4
আপনি সহজেই এইচটিএমএল স্ক্র্যাপ করতে এই সরঞ্জামটি ব্যবহার করতে পারেন।
ফারাজ কেলহিনি

এমনকি অনুমতি_url_fopen সত্যতে সেট করা সত্ত্বেও, এই ফাংশনটি পৃষ্ঠার এইচটিএমএল ফিরিয়ে দেয় না? আমার আর কি চেক করা উচিত?
কোডফোর্ড ভাল

উত্তর:


140

যদি আপনার পিএইচপি সার্ভার ইউআরএল ফোপেন মোড়কে অনুমতি দেয় তবে সবচেয়ে সহজ উপায় হ'ল:

$html = file_get_contents('/programming/ask');

আপনার যদি আরও নিয়ন্ত্রণের প্রয়োজন হয় তবে আপনার সিআরএল কার্যগুলি দেখতে হবে:

$c = curl_init('/programming/ask');
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
//curl_setopt(... other options you want...)

$html = curl_exec($c);

if (curl_error($c))
    die(curl_error($c));

// Get the status code
$status = curl_getinfo($c, CURLINFO_HTTP_CODE);

curl_close($c);

আমি 404 সম্পর্কে উদ্বিগ্ন। লিঙ্কটি উপস্থিত না থাকলে আমি এর লিখিত সামগ্রীটি চাই না, পরিবর্তে আমি একটি ত্রুটি বার্তা প্রদর্শন করতে চাই ?? আমরা কীভাবে খুঁজে পাব যে ইউআরএল 404 ত্রুটি দিচ্ছে বা না (কেবল মেনাস URL টি কাজ করছে কিনা)?
প্রশান্ত

4
@ প্রশান্ত: আমি একটি কার্ল_জিটিনফো কল যুক্ত করতে সম্পাদনা করেছি যা আপনাকে 200 বা 404 বা যা কিছু দেবে
গ্রেগ

এছাড়াও পিএইচপি কীভাবে বর্তমান পৃষ্ঠার এইচটিএমএল পাওয়া সম্ভব?
রেনারো সান্টোস

এটি কি ক্রস-ডোমেন?
I.Am.A.Guy

পিএইচপি 7 তে কাজ করবে না। Php.ini চেক করেছেন এবং ফপেন চালু আছে।
কাস্পার এল পালজি

22

এছাড়াও আপনি যদি পুনরুদ্ধার করা পৃষ্ঠাটি কোনওভাবে চালনা করতে চান তবে আপনি কিছু পিএইচপি ডিওএম পার্সার চেষ্টা করতে পারেন। আমি পিএইচপি সিম্পল এইচটিএমএল ডোম পার্সার ব্যবহার করা খুব সহজ খুঁজে পাই ।


11

আপনি ইয়াহু থেকে YQL লাইব্রেরিগুলি পরীক্ষা করতে চাইতে পারেন: http://developer.yahoo.com/yql

হাতে কাজ যেমন সহজ

select * from html where url = 'http://stackoverflow.com/questions/ask'

আপনি কনসোলে এটি ব্যবহার করে দেখতে পারেন: http://dePLer.yahoo.com/yql/console (লগইন প্রয়োজন)

আরো দেখুন ক্রিস Heilmanns কিছু চমৎকার ধারনা আর কি আপনি কি করতে পারেন জন্য স্ক্রিনকাস্ট: http://developer.yahoo.net/blogs/theater/archives/2009/04/screencast_collating_distributed_information.html


10

সহজ উপায়: ব্যবহার file_get_contents():

$page = file_get_contents('http://stackoverflow.com/questions/ask');

অনুগ্রহ করে নোট করুন যে ইউআরএল-সচেতন ফপেন র‍্যাপারগুলি ব্যবহার করতে সক্ষম হতে আপনার allow_url_fopenঅবশ্যই থাকতে হবে ।truephp.ini

আরও উন্নত উপায়: আপনি যদি পিএইচপি কনফিগারেশন পরিবর্তন করতে না পারেন তবে allow_url_fopenএটি falseডিফল্টরূপে এবং যদি ext / curl ইনস্টল থাকে তবে পছন্দসই পৃষ্ঠায় সংযোগ করার জন্য cURLলাইব্রেরিটি ব্যবহার করুন ।


এমনকি অনুমতি_url_fopen সত্যতে সেট করা সত্ত্বেও, এই ফাংশনটি পৃষ্ঠার এইচটিএমএল ফিরিয়ে দেয় না? আমার আর কি চেক করা উচিত?
কোডফোর্ড ভাল

4

আপনি যদি ফাইলটি ভিজিয়েবল হিসাবে উত্স সঞ্চয় করতে চান তবে আপনি ফাইল_জেট_কন্টেন্টস ব্যবহার করতে পারেন তবে কার্লটি আরও ভাল প্র্যাকটিভ।

$url = file_get_contents('http://example.com');
echo $url; 

এই সমাধানটি আপনার সাইটে ওয়েবপৃষ্ঠা প্রদর্শন করবে। তবে কার্ল একটি ভাল বিকল্প।



3
include_once('simple_html_dom.php');
$url="http://stackoverflow.com/questions/ask";
$html = file_get_html($url);

আপনি একটি অ্যারের (পার্স ফর্ম) হিসেবে পুরো HTML কোড পেতে পারেন ব্যবহার করে এই কোড ডাউনলোড 'simple_html_dom.php' ফাইল এখানে http://sourceforge.net/projects/simplehtmldom/files/simple_html_dom.php/download


2

ইউআরএল থেকে সামগ্রী পাওয়ার জন্য এখানে দুটি ভিন্ন, সহজ উপায় :

1) প্রথম পদ্ধতি

আপনার হোস্টিং (php.ini বা অন্য কোথাও) থেকে Allow_url_ شمول সক্ষম করুন

<?php
$variableee = readfile("http://example.com/");
echo $variableee;
?> 

বা

2) দ্বিতীয় পদ্ধতি

Php_curl, php_imap এবং php_openssl সক্ষম করুন

<?php
// you can add anoother curl options too
// see here - http://php.net/manual/en/function.curl-setopt.php
function get_dataa($url) {
  $ch = curl_init();
  $timeout = 5;
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)");
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,false);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
  curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  $data = curl_exec($ch);
  curl_close($ch);
  return $data;
}

$variableee = get_dataa('http://example.com');
echo $variableee;
?>

1

আপনি একটি পৃথক এইচটিএমএল ট্যাগ স্তর ভেরিয়েবল পেতে ডমডকুমেন্ট পদ্ধতিটি ব্যবহার করতে পারেন

$homepage = file_get_contents('https://www.example.com/');
$doc = new DOMDocument;
$doc->loadHTML($homepage);
$titles = $doc->getElementsByTagName('h3');
echo $titles->item(0)->nodeValue;

1

$output = file("http://www.example.com");আমি সক্ষম না হওয়া পর্যন্ত কাজ করে নি: allow_url_fopen, allow_url_include,এবং পিএইচপি 7 file_uploadsএর php.iniজন্য


0

আমি এই কোডটি চেষ্টা করেছিলাম এবং এটি আমার পক্ষে কাজ করছে।

$html = file_get_contents('www.google.com');
$myVar = htmlspecialchars($html, ENT_QUOTES);
echo($myVar);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.