xpwizard
Junior Member
- Nov 6, 2010
- 198
- 123
Needed this for a side project today, and why not share 
Features:
- Scrapes homepage of Trendsbuzz, giving you the hottest trends for 9 different sites (90 trends in total).
- Can display results or save to file
- Can be run via cron to have an ongoing list of trends.
Requirements:
- Curl enabled
- If saving to file. Account must have permissions to create folders/files
How to use:
- Choose whether to output text or save to file
- If you save to file, define a file name
- Files will be saved into a subfolder named "logs"
Optional:
- Can be run via cron. Will save into daily files (duplicates will be removed)
Code:
Features:
- Scrapes homepage of Trendsbuzz, giving you the hottest trends for 9 different sites (90 trends in total).
- Can display results or save to file
- Can be run via cron to have an ongoing list of trends.
Requirements:
- Curl enabled
- If saving to file. Account must have permissions to create folders/files
How to use:
- Choose whether to output text or save to file
- If you save to file, define a file name
- Files will be saved into a subfolder named "logs"
Optional:
- Can be run via cron. Will save into daily files (duplicates will be removed)
Code:
PHP:
<?php
/*
* Trendsbuzz Scraper: scraper.php
* Copyright 2011 Adam <xpwizard @ Blackhatworld.com>
* Date: 2011-11-24
*
* READ ME
*
* - This file can be run via cron as long as the "file" is chosen as the
* output. By doing this, trends will be logged by day, and will be
* appended to the end of the file.
* Duplicates will be not be appended into file.
*
* - Choosing "text" is good for once off scrapes where you just want
* to copy and paste the output.
*
* - This script only scrapes the homepage of Trendsbuzz.
*
*/
// choose output type
$file_type = "file"; // either "file" or "text"
// if you chose file, define filename
$file_name = "trends.txt";
/*********** DO NOT EDIT BELOW THIS LINE ***********/
// check for Curl
if (!function_exists('curl_version')) { die("Curl is not enabled. Contact your host to enable Curl."); }
// check whether folder exists
if (!is_dir(getcwd()."/logs")) { mkdir(getcwd()."/logs", 0755, true); }
// check file permissions
if (!is_writable(getcwd()."/logs/") || !is_readable(getcwd()."/logs/")) { die("Folder does not have correct permissions."); }
// if file, open file
if ($file_type == "file") {
$file = getcwd()."/logs/".date('d-m-y')."_$file_name";
$fp = fopen($file, 'ab+');
}
// get trendsbuzz homepage
$res = curlGET("http://trendsbuzz.com");
// make sure request isn't blank
if (empty($res)) { die("Request was blank. Make sure trendsbuzz is online."); }
// regex to find all trends
preg_match_all("/html\">(.+?)<\/a>/i", $res, $matches);
// display/log results
if ($file_type == "file") {
if (filesize($file) > 0) {
$file_check = fread($fp, filesize($file));
foreach ($matches[1] as $val) {
if(stripos($file_check, $val) === false) { fwrite($fp, "$val\n"); }
}
} else {
foreach ($matches[1] as $val) {
fwrite($fp, "$val\n");
}
}
fclose($fp);
echo "Scrape successful";
} else {
foreach ($matches[1] as $val) {
echo "$val<br>";
}
}
// curl fucntion for get requests
function curlGET($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_REFERER, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
$res = curl_exec($ch);
curl_close($ch);
return $res;
}
?>
Last edited: