Помогите переделать парсинг

V
На сайте с 28.09.2012
Offline
75
763

Суть парсинга спарсить с Твитеера количиство твиттов, читателей и читаемих определенних людей. На сколько я понял парсинг парсит сначало в ТХТ файл а потом в базу. Нужно сделать так чтоб перед тем как парсинг спарсит в базу поудалять пробели. Для етого в нете нашел такой код:

$str='строка с пробелами'

str_replace(' ','',$str);

Помогите такой код внедрить в парсинг

SI
На сайте с 03.12.2007
Offline
130
#1

Азачемтекстбезпробеловбудеточеньнеудобночитать

-= Онлайн сервисы =-
V
На сайте с 28.09.2012
Offline
75
#2

там не текст а числа. А нужно так сделать чтоб не возникало багов с сортировкой

LEOnidUKG
На сайте с 25.11.2006
Offline
1773
#3
Помогите такой код внедрить в парсинг

Варианты:

1. Выучить программирование

2. Нанять программиста, чтобы он вам сделал

выбирайте любой.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
forest25
На сайте с 12.09.2009
Offline
67
#4

ТС, выкладывайте код парсера на pastebin. Там уже подскажем/подскажут как реализовать то что вы хотите.

VPS 512MB 20GB SSD KVM - 5$ (http://u.hmdw.me/digitalocean) | ИМХО о хостингах (http://u.hmdw.me/hosting)
V
На сайте с 28.09.2012
Offline
75
#5

К сожелению отблагодарить нечем. Могу только дать инвайт на 2ip.ru(там у вас исчезнет капча и появятся ип-шпион, и др.). А код парсера викласти не могу, Извините

---------- Добавлено 12.07.2013 в 11:17 ----------

Код парсинга

<?php

define( "DOCROOT", dirname(__FILE__) ."/" );

include_once( DOCROOT ."includes/functions.class.php" );
include_once( "includes/dbconfig.php" );


class ParseTwitt{

var $start_url = "https://twitter.com/";
var $auth_url = "https://twitter.com/sessions";
var $table = "dle_post";


function __construct(){
$this->funcs = new Functions;
$this->config = $this->funcs->getConfig( 'general' );
if( !$this->config['username'] OR !$this->config['passwd'] ) {
die( "Заполните данные для авторизации на twitter.com" );
}
if( !intval($this->config['time_auth']) OR (time() - intval($this->config['time_auth'])) > 3600 ){
if( !$this->auth() ){
$this->logs( "Неправильные данные для доступа в твиттер" );
$this->auth_status = FALSE;
}else{
$this->config['time_auth'] = time();
$this->funcs->saveConfig( "general", $this->config );
$this->auth_status = TRUE;
}
}else{
$this->auth_status = TRUE;
}
}


function auth( $redirect_url="/" ){
$page = $this->funcs->url_open( $this->start_url );
if( stripos($page, 'name="session[password]"') === FALSE ) return TRUE;
$post_data = "session[username_or_email]=". rawurlencode($this->config['username']) ."&session[password]=". rawurlencode($this->config['passwd']);
preg_match( '#<input type="hidden" value="(.[^"]+?)" name="authenticity_token"/>#', $page, $auth_token );
$post_data .= "&authenticity_token=". rawurlencode($auth_token[1]) ."&redirect_after_login=". rawurlencode($redirect_url) ."&scribe_log=";
$post_data .= "&remember_me=1";
$page = $this->funcs->url_open( $this->auth_url, array("post_data" => $post_data) );
if( stripos($page, 'name="session[password]"') === FALSE ) return TRUE;
}


function parseTwitts( $page ){
if( !$page ) return;
preg_match( '#data-element-term="tweet_stats" data-nav=\'profile\'>\s{0,200}<strong>(.[^>]+?)</strong>#', $page, $value );
if( !$value ) return;
return trim( $value[1] );
}


function parseFollowing( $page ){
if( !$page ) return;
preg_match( '#data-element-term="following_stats" data-nav=\'following\'>\s{0,200}<strong>(.[^>]+?)</strong>#', $page, $value );
if( !$value ) return;
return trim( $value[1] );
}


function parseFollowers( $page ){
if( !$page ) return;
preg_match( '#data-element-term="follower_stats" data-nav=\'followers\'>\s{0,200}<strong>(.[^>]+?)</strong>#', $page, $value );
if( !$value ) return;
return trim( $value[1] );
}


function parseAvatar( $page ){
if( !$page ) return;
preg_match( '#<a href="(.[^"]+?)" class="profile-picture media-thumbnail"#', $page, $value );
if( !$value ) return;
return $value[1];
}


function getInfo( $page ){
if( !$page ) return;
$info = array();
$info['twitts'] = $this->parseTwitts( $page );
$info['following'] = $this->parseFollowing( $page );
$info['followers'] = $this->parseFollowers( $page );
$info['link_img_profile'] = $this->parseAvatar( $page );
return $info;
}


function getLoginsTwitt(){
$resource = mysql_query( "SELECT `id`, `twitter_login` FROM `". $this->table ."` WHERE `twitter_login` != '';" );
return $resource;
}


function fetchArray( $resource ){
return mysql_fetch_array( $resource );
}


function updateInfoTwitt( $info, $id ){
if( !$info OR !$id ) return;
mysql_query( "UPDATE `". $this->table ."` SET
`twitter_twitts` = '". $info['twitts'] ."',
`twitter_following` = '". $info['following'] ."',
`twitter_followers` = '". $info['followers'] ."',
`twitter_pic` = '". mysql_real_escape_string($info['link_img_profile']) ."'
WHERE `id` = '". $id ."'
;" ) or die(mysql_error());
}


function updater(){
if( !$this->auth_status ) $this->funcs->logs( "Ошибка авторизации" );
$resource = $this->getLoginsTwitt();
while( $row = $this->fetchArray($resource) ){
$twitter_login = $row['twitter_login'];
if( !$twitter_login ) continue;
$page = $this->funcs->url_open( $this->start_url . $twitter_login );
$info = $this->getInfo( $page );
// var_dump( $info, $row );continue;
$this->updateInfoTwitt( $info, $row['id'] );
sleep( 3 );
}
}


}


$p = new ParseTwitt;
$p->updater();

?>

Нашел подобную функцию в парсинге. Как ее включить?

      // удаляет пробелы в строке

function delTwoSpaces( $string ){

$string = trim( $string );

while( TRUE ){

if( strpos($string, " ") === FALSE ) break;

$string = str_replace( " ", "", $string );

}

return $string;

}

V
На сайте с 28.09.2012
Offline
75
#6

Что в таком коде добавить чтоб удалялись пробели?

function parseTwitts( $page ){
if( !$page ) return;
preg_match( '#data-element-term="tweet_stats" data-nav=\'profile\'>\s{0,200}<strong>(.[^>]+?)</strong>#', $page, $value );
if( !$value ) return;
return trim( $value[1] );
}

Так не роботаєт:


function parseTwitts( $page ){
if( !$page ) return;
preg_match( '#data-element-term="tweet_stats" data-nav=\'profile\'>\s{0,200}<strong>(.[^>]+?)</strong>#', $page, $value );
$string = str_replace( " ", "", $string );
if( !$value ) return;
return trim( $value[1] );
}
siv1987
На сайте с 02.04.2009
Offline
427
#7

return str_replace( ' ', '', trim( $value[1] ) );

V
На сайте с 28.09.2012
Offline
75
#8

Спасибо всем Уже переделал. Помог мне один человек и просил не говорить его имя. Справился со второго раза. Вконце сказал что там возможно не бьили пробели. Вот каким кодом сделал

function updateInfoTwitt( $info, $id ){
if( !$info OR !$id ) return;
mysql_query( "UPDATE `". $this->table ."` SET
`twitter_twitts` = '". preg_replace("#\D#", '', $info['twitts']) ."',
`twitter_following` = '". preg_replace("#\D#", '', $info['following']) ."',
`twitter_followers` = '". preg_replace("#\D#", '', $info['followers']) ."',
`twitter_pic` = '". mysql_real_escape_string($info['link_img_profile']) ."'
WHERE `id` = '". $id ."'
;" ) or die(mysql_error());
}



---------- Добавлено 12.07.2013 в 21:28 ----------

Тему закривайте

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий