Как можно использовать PHP (simple_html_dom) для патентов Google?

0

Я хотел бы получить результат для Google патентов, кто может помочь?

Это пример из поиска Google,

<?php
require_once('simple_html_dom.php');
$url  = 'https://www.google.com/search?hl=en&q=facebook&num=1';
$html = file_get_html($url);
$linkObjs = $html->find('h3.r a');

foreach ($linkObjs as $linkObj) {
    $title = trim($linkObj->plaintext);
    $link  = trim($linkObj->href);

    // if it is not a direct link but url reference found inside it, then extract
    if (!preg_match('/^https?/', $link) && preg_match('/q=(.+)&amp;sa=/U', $link, $matches) && preg_match('/^https?/', $matches[1])) {
        $link = $matches[1];
    } else if (!preg_match('/^https?/', $link)) { // skip if it is not a valid link
        continue;    
    }

    echo '<p>Title: ' . $title . '<br />';
    echo 'Link: ' . $link . '</p>';    
}

?>

Результат:

Название: Добро пожаловать в Facebook - Войдите, зарегистрируйтесь или узнайте больше
Ссылка: https://www.facebook.com/

Мне нравится этот результат, но мне нужно искать Google Patents.

Если есть другие лучшие варианты/методы, пожалуйста, скажите мне, очень благодарен.

  • 0
    Имейте в виду, что Google не разрешает очищать страницы результатов поиска, поэтому вы можете быть заблокированы за это в любое время. См. Stackoverflow.com/a/22703153/582278 У Патентного поиска есть API - developers.google.com/patent-search Он устарел, но будет продолжать работать.
  • 0
    @Blowski Но это, похоже, было прекращено
Показать ещё 4 комментария
Теги:
simple-html-dom

1 ответ

0
Лучший ответ

Если вы ищете патент на "многофункциональную клавиатуру", установите $ url как " https://www.google.com/search?tbm=pts&hl=ru&q=multi+function+keypad&num=1 ",

но помните, если вы ищете патент на то, что недоступно на этом сайте, вы можете получить результат с какого-либо другого сайта или даже не получить результат. вам нужно будет справиться с этими ситуациями. (например, проверьте, есть ли в нем результат www.google.com/patents/).

Гораздо более эффективным способом поиска будет использование google api. искать патент и php на https://developers.google.com/web-search/docs/

надеюсь это поможет

Обновление: я написал небольшой скрипт для показа, он может работать с тем, что я сказал. Я не хотел изучать simple_html_dom.php, поэтому не использовал это. Возможно, вы, возможно, выясните, можете ли вы улучшить мой код, используя этот simple_html_dom.php.

Когда-нибудь ему понадобится пара обновлений для его работы (в моем коде он выбирает случайный IP-адрес, который google не обрабатывает корректно и не возвращает никакого результата, не стесняйтесь использовать ваш ip, но вскоре может быть заблокирован, если вы запустите это слишком часто, Randomizing IP может по-прежнему не мешать блокировке вашего ip, если вы запускаете слишком часто (google просит ввести captha, если находит соскабливание, как вещи), я также рандомизировал несколько других вещей, таких как http-заголовок и пользовательский агент). ну вот код

<?php

function searchGooglePatent($searchString){
        $url = "https://www.google.com/search?tbm=pts&hl=en&q=".rawurlencode($searchString);//."&num=1"; // add &num=1 if you need only one result
        echo $url;
        $html = geturl($url);
        $ids = match_all('/<a.*?href=\"(https:\/\/www\.google\.com\/patents\/\w\w\d+)\?.*?\".*?>.*?<\/a>/ms', $html, 1);
        return $ids;
    }

function match_all($regex, $str, $i = 0){
        if(preg_match_all($regex, $str, $matches) === false) {
            return false;
        } else {
            return $matches[$i];
        }
    }


function geturl($url){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
        $ip=rand(0,255).'.'.rand(0,255).'.'.rand(0,255).'.'.rand(0,255);
        echo "<br>".$ip."<br>";
        curl_setopt($ch, CURLOPT_HTTPHEADER, array("REMOTE_ADDR: $ip", "HTTP_X_FORWARDED_FOR: $ip"));
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/".rand(3,5).".".rand(0,3)." (Windows NT ".rand(3,5).".".rand(0,2)."; rv:2.0.1) Gecko/20100101 Firefox/".rand(3,5).".0.1");
        set_time_limit(90);
        $html = curl_exec($ch);
        curl_close($ch);
        return $html;
    }

$searchResult = searchGooglePatent("Multi function keypad");
echo "<pre>";
var_dump($searchResult);
echo "</pre>";

?>

Страница результатов будет выглядеть так:

    https://www.google.com/search?tbm=pts&hl=en&q=Multi%20function%20keypad
    71.10.79.131
    array (size=4)
      0 => string 'https://www.google.com/patents/US7724240' (length=40)
      1 => string 'https://www.google.com/patents/US6876312' (length=40)
      2 => string 'https://www.google.com/patents/US8259073' (length=40)
      3 => string 'https://www.google.com/patents/US7523862' (length=40)
  • 0
    если я установлю $ url как " google.com/… ", он не сможет получить никакого результата
  • 0
    Тест Успешно! Большое спасибо. У меня небольшой запрос, как получить заголовок URL?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню