php simple_html_dom не загружает контент в правильном порядке - PullRequest
0 голосов
/ 08 апреля 2011

Я вернулся с другой проблемой очистки экрана.Я использую simple_html_dom.php для очистки экрана. Я вставляю код, текст ответа и второй текст ответа.эти ответы - результат, который предоставляет мне simple_html_dom. Он бы посмотрел, что ответ в порядке, но это не так.на самом деле будет ссылка .. на которую идет мой запрос, и вы можете вручную увидеть, какие результаты (в вашем браузере) и что мне дает simple_html_dom.

Итак, давайте сначала посмотрим код.

здесь se - это search_engine, $ key - это ключевое слово (скажем, цифровое обозначение)

function search_company_name( $com_id, $string, $c , $fetched )//----Function: search company name in resultant string
{
    foreach($com_id AS $company => $id)
    {
        if(preg_match('/www\.'.$company.'/', $string)>0)
        {           
            return array('id' => $id,'rank' => $c+1,'fetched' => $fetched+1);
            break;            
        }        
    }    
    return NULL;   
}


if($se === 'google.com' || $se === 'google.co.in' || $se === 'google.de' || $se === 'google.nl'|| $se === 'google.co.uk')
{    
    $count = 0;       //---- Count the rank ----//
    //----LOOP FOR 2 PAGES OF 100 RESULTS----//
    for($num_of_results = 0; $num_of_results < 200; $num_of_results += 100)
    {
        var_dump('http://www.'.$se.'/search?q='.$key.'&start='.$num_of_results.'&num=100');// **check the link urself in ur browser**
        $html = file_get_html('http://www.'.$se.'/search?q='.$key.'&start='.$num_of_results.'&num=10');

        foreach($html->find('div[id=ires] ol li') as $row)
        {            
            $string = $row->plaintext;
            $temp = search_company_name($company_rank, $string, $count, $counter);            
            if(!is_null($temp))
            {
                reset($temp);
                array_push($finalData, $temp);
                foreach($company_rank as $company => $id)
                {
                    if($temp[id] == $id)
                    {
                        unset($company_rank[$company]);break;
                    }
                }
                $counter++;
            }
            unset($temp);
            if ($tot_company == $counter)
            {
                break;
            }
            $count++;
        }
        if($tot_company == $counter)
        {
            break;
        }
        $html->clear();
        sleep(3);
    }
}

код fyn и работает для вставки двух ответов.

<code><pre class='xdebug-var-dump' dir='ltr'><small>string</small> <font color='#cc0000'>'http://www.google.co.in/search?q=Digital+Signage&amp;start=0&amp;num=10'</font> <i>(length=63)</i>
string 'Цифровые вывески - Википедия, бесплатная энциклопедия. Цифровые вывески - это форма электронного дисплея, показывающая информацию, рекламу и другие сообщения.Цифровые вывески (такие как LCD, LED, плазменные дисплеи, ... Рынок и приложения - Компании - Контент - Technologyen.wikipedia.org/wiki/Digital_signage - Кэшированные - Похожие ' (длина = 322) строка 'Digital Signage |KiosksDynamic, корпоративные программные и аппаратные решения для цифровых вывесок для простых и сложных установок цифрового наружного монтажа (DOOH), масштабируемых до любого размера ... www.digitalsignage.com/ - Кэшируемый - Подобный ' (длина =222)

Как вы можете видеть, есть два ответа li (проверьте себя). Результатом является текст 1-го li и 5li.так что, где 2-4 ли ушел ?? он работает правильно для "программного обеспечения для цифровых вывесок" в Google.Пожалуйста, помогите мне. Мой проект близок к концу, и я застрял в этой глупой пробе.

второй ответ может не привести меня к вопросу.

1 Ответ

0 голосов
/ 12 апреля 2011

Google возвращает по-разному структурированные результаты, основанные на вашем пользовательском агенте. Узнайте свой пользовательский агент здесь , а затем настройте свой сценарий на использование того же самого.

Ваш IP-адрес может определять, какая страница Google будет отображаться и может иметь разную разметку.

...