如何使用 PHP(simple_html_dom) 获得 Google 专利?
How can use PHP(simple_html_dom) for Google Patents?
我想得到 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=(.+)&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>';
}
?>
结果:
Title: Welcome to Facebook - Log In, Sign Up or Learn More
Link: https://www.facebook.com/
我喜欢这个结果,但我需要搜索 Google 项专利。
如果有其他更好的选择/方法请告诉我,万分感谢
如果您正在寻找 "multifunctional keypad" 的专利
将 $url 设置为“https://www.google.com/search?tbm=pts&hl=en&q=multi+function+keypad&num=1”
但请记住,如果您正在为该网站上没有的东西寻找专利,您可能会从其他网站获得结果,甚至可能得不到结果。
您将需要处理这些情况。 (例如,检查结果中是否有 www.google.com/patents/)。
更有效的搜索方式是使用 google api。在 https://developers.google.com/web-search/docs/
上搜索专利和 php
希望这对您有所帮助
更新: 我写了一个小脚本来演示,它可以按照我说的工作。我不想学习 simple_html_dom.php,所以没有使用它。您可能显然想知道是否可以使用 simple_html_dom.php.
改进我的代码
有时它需要刷新几次才能工作(在我的代码中它选择了一个随机 IP google 不认为有效并且 returns 没有结果,请随意使用你的 ip ,但是如果您 运行 太频繁,那可能很快就会被阻止,如果 运行 太频繁,随机化 IP 可能仍然无法阻止您的 ip(google 如果发现 scr[,则要求输入验证码aping 之类的东西),我还随机化了一些其他东西,比如 http header 和用户代理)。
这是代码
<?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)
我想得到 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=(.+)&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>';
}
?>
结果:
Title: Welcome to Facebook - Log In, Sign Up or Learn More
Link: https://www.facebook.com/
我喜欢这个结果,但我需要搜索 Google 项专利。
如果有其他更好的选择/方法请告诉我,万分感谢
如果您正在寻找 "multifunctional keypad" 的专利 将 $url 设置为“https://www.google.com/search?tbm=pts&hl=en&q=multi+function+keypad&num=1”
但请记住,如果您正在为该网站上没有的东西寻找专利,您可能会从其他网站获得结果,甚至可能得不到结果。 您将需要处理这些情况。 (例如,检查结果中是否有 www.google.com/patents/)。
更有效的搜索方式是使用 google api。在 https://developers.google.com/web-search/docs/
上搜索专利和 php希望这对您有所帮助
更新: 我写了一个小脚本来演示,它可以按照我说的工作。我不想学习 simple_html_dom.php,所以没有使用它。您可能显然想知道是否可以使用 simple_html_dom.php.
改进我的代码有时它需要刷新几次才能工作(在我的代码中它选择了一个随机 IP google 不认为有效并且 returns 没有结果,请随意使用你的 ip ,但是如果您 运行 太频繁,那可能很快就会被阻止,如果 运行 太频繁,随机化 IP 可能仍然无法阻止您的 ip(google 如果发现 scr[,则要求输入验证码aping 之类的东西),我还随机化了一些其他东西,比如 http header 和用户代理)。 这是代码
<?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)