SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 10.10.2008 21:04:13

lemmy
Участник
Зарегистрирован: 07.09.2008
Сообщений: 9

парсинг сушит мозг

всем привет !!!
имеется вот такой код:

<?php
function open_page($url,$f=1,$c=2,$r=0,$a=0,$cf=0,$pd=""){
global $oldheader;
$url = str_replace("http://","",$url);
if (preg_match("#/#","$url")){
$page = $url;
$url = @explode("/",$url);
$url = $url[0];
$page = str_replace($url,"",$page);
if (!$page || $page == ""){
$page = "/";
}
$ip = gethostbyname($url);
}else{
$ip = gethostbyname($url);
$page = "/";
}
$open = fsockopen($ip, 80, $errno, $errstr, 60);
if ($pd){
$send = "POST $page HTTP/1.0\r\n";
}else{
$send = "GET $page HTTP/1.0\r\n";
}
$send .= "Host: $url\r\n";
if ($r){
$send .= "Referer: $r\r\n";
}else{
if ($_SERVER['HTTP_REFERER']){
$send .= "Referer: {$_SERVER['HTTP_REFERER']}\r\n";
}
}
if ($cf){
if (@file_exists($cf)){
$cookie = urldecode(@file_get_contents($cf));
if ($cookie){
$send .= "Cookie: $cookie\r\n";
$add = @fopen($cf,'w');
fwrite($add,"");
fclose($add);
}
}
}
$send .= "Accept-Language: en-us, en;q=0.50\r\n";
if ($a){
$send .= "User-Agent: $a\r\n";
}else{
$send .= "User-Agent: {$_SERVER['HTTP_USER_AGENT']}\r\n";
}
if ($pd){
$send .= "Content-Type: application/x-www-form-urlencoded\r\n";
$send .= "Content-Length: " .strlen($pd) ."\r\n\r\n";
$send .= $pd;
}else{
$send .= "Connection: Close\r\n\r\n";
}
fputs($open, $send);
while (!feof($open)) {
$return .= fgets($open, 4096);
}
fclose($open);
$return = @explode("\r\n\r\n",$return,2);
$header = $return[0];
if ($cf){
if (preg_match("/Set\-Cookie\: /i","$header")){
$cookie = @explode("Set-Cookie: ",$header,2);
$cookie = $cookie[1];
$cookie = explode("\r",$cookie);
$cookie = $cookie[0];
$cookie = str_replace("path=/","",$cookie[0]);
$add = @fopen($cf,'a');
fwrite($add,$cookie,strlen($read));
fclose($add);
}
}
if ($oldheader){
$header = "$oldheader<br /><br />\n$header";
}
$header = str_replace("\n","<br />",$header);
if ($return[1]){
$body = $return[1];
}else{
$body = "";
}
if ($c === 2){
if ($body){
$return = $body;
}else{
$return = $header;
}
}
if ($c === 1){
$return = $header;
}
if ($c === 3){
$return = "$body";
}
if ($f){
if (preg_match("/Location\hmm","$header")){
$url = @explode("Location: ",$header);
$url = $url[1];
$url = @explode("\r",$url);
$url = $url[0];
$oldheader = str_replace("\r\n\r\n","",$header);
$l = "&#76&#111&#99&#97&#116&#105&#111&#110&#58";
$oldheader = str_replace("Location:",$l,$oldheader);
return open_page($url,$f,$c,$r,$a,$cf,$pd);
}else{
return $return;
}
}else{
return $return;
}
}

$url = "http://www.site.com";
$f = 1;
$c = 2;//1 for header, 2 for body, 3 for both
$r = NULL;
$a = NULL;
$cf = NULL;
$pd = NULL;

$page = open_page($url,$f,$c,$r,$a,$cf,$pd);

print $page;


?>

таким образом я вытягиваю страницу с сайта одного сайта ....
как мне вытащить нужный мне текст
и загнать в Б.Д. а потом с неё выбрать нужный мне текст ???

Неактивен

 

#2 11.10.2008 19:13:30

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: парсинг сушит мозг

По-моему, Вы изобрели велосипед:
  $data = file("http://www.example.com/");
если нужно совсем крутое, то
  php.net/curl

В базу положить -
mysql_connect(...);
mysql_query ("insert into table values ('" . addslashes ($data) .')");

Неактивен

 

#3 12.10.2008 22:58:57

lemmy
Участник
Зарегистрирован: 07.09.2008
Сообщений: 9

Re: парсинг сушит мозг

paulus написал:

По-моему, Вы изобрели велосипед:
  $data = file("http://www.example.com/");
если нужно совсем крутое, то
  php.net/curl

В базу положить -
mysql_connect(...);
mysql_query ("insert into table values ('" . addslashes ($data) .')");

спасибо !!!
но таким образом я ложу файл
целиком в Б.Д. а мне как - то надо
выбрать интересующий момент
текста и когда этот текст
обновляется на сайте, то
и у меня обновлялось в Б.Д.
для парсинг дело новое, поэтому
хочу понять сам процесс ...

Неактивен

 

#4 12.10.2008 23:13:31

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: парсинг сушит мозг

Насколько Вы привязаны к PHP? Скрипты консольные для этой задачи - самое оно, как мне кажется smile


#! /bin/bash

rm -f file.sql
curl -sf example.com | grep 'interesting string' > file.sql
if [ -s file.sql ]; then
  sed -i "s/'/\\'/g" file.sql
  sed -i 's/"/\\"/g' file.sql
  ( echo "INSERT INTO tablename VALUES ('"; cat file.sql; echo "')" ) | mysql dbname
fi
 

Неактивен

 

#5 13.10.2008 00:23:28

lemmy
Участник
Зарегистрирован: 07.09.2008
Сообщений: 9

Re: парсинг сушит мозг

спасибо !!!
это хорошая идея, буду пробовать ...

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson