- Автор темы
- #1
Ниже код скрипта.
что делает:
-Считывает построчно(предварительно залитый) файл keys.txt (список кивордов)
-из каждой строки формирует запрос:
google.com/search?q=KEYWORD&gl=us&hl=en
-затем, из строки "Results 1 - 100 of about 16,000" парсит цифру 16,000
и так, для каждого киворда.
-сохраняет ризалт в файл keys-r.html
template.html используется при этом как шаблон для вывода ризалтов парсинга.
Таймаут прописывается руками внутри скрипта.
Скрипт написан для использования на сервере с пхп4.
За скрипт отдал 10 баксов.
Вопросы кодерам:
Вы считаете этот код грамотным?
Нужно ли для такой задачи использовать прокси или хватит таймаута в 3-10 сек?
Возможно ли сделать его быстрым?
Просто иногда пачка кивордов по 2000 строк бывает...
Может кто поможет довести до ума?
Ну и выложим тут в паблик :az:
Юзабилити, согласен = 0, но это мелочь, можно быстро поправить
что делает:
-Считывает построчно(предварительно залитый) файл keys.txt (список кивордов)
-из каждой строки формирует запрос:
google.com/search?q=KEYWORD&gl=us&hl=en
-затем, из строки "Results 1 - 100 of about 16,000" парсит цифру 16,000
и так, для каждого киворда.
-сохраняет ризалт в файл keys-r.html
template.html используется при этом как шаблон для вывода ризалтов парсинга.
Таймаут прописывается руками внутри скрипта.
Скрипт написан для использования на сервере с пхп4.
За скрипт отдал 10 баксов.
PHP:
<?php
define("KEY_LIST_FILE", "keys.txt");
define("RESULT_FILE", substr(KEY_LIST_FILE,0,-4) . "-r.html");
$data = file_get_contents(KEY_LIST_FILE);
$result = array();
foreach (explode("\n", $data) as $KEY) {
$KEY = trim($KEY);
$q = "http://google.com/search?q=" . urlencode($KEY) . "&gl=us&hl=en";
$googleData = file_get_contents($q);
$regexp = '#<p> Results <b>\d+</b> - <b>\d+</b> of about <b>(.+)</b>#Uis';
$value = array();
preg_match_all($regexp, $googleData, $value);
if (!empty($value[1][0]))
$result[] = array($KEY, $value[1][0]);
sleep(5);
}
if (!function_exists('file_put_contents')) {
define('FILE_APPEND', 0);
function file_put_contents($n, $d, $flag = false) {
$mode = ($flag == FILE_APPEND || strtoupper($flag) == 'FILE_APPEND') ? 'a' : 'w';
$f = @fopen($n, $mode);
if ($f === false) {
return 0;
} else {
if (is_array($d)) $d = implode($d);
$bytes_written = fwrite($f, $d);
fclose($f);
return $bytes_written;
}
}
}
function generateHTMLFile($data = array()) {
if (empty($data) or !is_array($data))
return false;
$htmlString = '';
foreach ($data as $val) {
$htmlString .= "<tr id=\"result\"><td>{$val[0]}</td><td>{$val[1]}</td></tr>\n";
}
$result = preg_replace('#<tr id="result"><td>.+</td><td>.+</td></tr>#Uis', $htmlString, file_get_contents("template.htm"));
file_put_contents(RESULT_FILE, $result);
}
generateHTMLFile($result);
?>
Вопросы кодерам:
Вы считаете этот код грамотным?
Нужно ли для такой задачи использовать прокси или хватит таймаута в 3-10 сек?
Возможно ли сделать его быстрым?
Просто иногда пачка кивордов по 2000 строк бывает...
Может кто поможет довести до ума?
Ну и выложим тут в паблик :az:
Юзабилити, согласен = 0, но это мелочь, можно быстро поправить