瀏覽代碼

fix scrape failures on google

lolcat 4 月之前
父節點
當前提交
2e5edda85b
共有 1 個文件被更改,包括 40 次插入19 次删除
  1. 40 19
      scraper/google.php

+ 40 - 19
scraper/google.php

@@ -522,7 +522,7 @@ class google{
 			curl_setopt($curlproc, CURLOPT_HTTPHEADER, [
 			curl_setopt($curlproc, CURLOPT_HTTPHEADER, [
 				"User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 26_0_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) GSA/406.0.862495628 Mobile/15E148 Safari/604.1",
 				"User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 26_0_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) GSA/406.0.862495628 Mobile/15E148 Safari/604.1",
 				"Accept: text/html, application/xml;q=0.9, */*;q=0.8",
 				"Accept: text/html, application/xml;q=0.9, */*;q=0.8",
-				"Accept-Language: nl,en;q=0.8",
+				"Accept-Language: en-US,en;q=0.8",
 				"Accept-Encoding: gzip, deflate",
 				"Accept-Encoding: gzip, deflate",
 				"Connection: Keep-Alive",
 				"Connection: Keep-Alive",
 				"Cache-Control: no-cache"
 				"Cache-Control: no-cache"
@@ -770,40 +770,61 @@ class google{
 			$this->fuckhtml->load($container);
 			$this->fuckhtml->load($container);
 			
 			
 			// probe for search result
 			// probe for search result
-			$sprobe =
+			$title =
 				$this->fuckhtml
 				$this->fuckhtml
 				->getElementsByAttributeValue(
 				->getElementsByAttributeValue(
 					"role",
 					"role",
-					"presentation",
-					"a"
+					"link",
+					"div"
 				);
 				);
 			
 			
-			if(count($sprobe) !== 0){
+			if(count($title) !== 0){
 				
 				
 				// we found a search result
 				// we found a search result
 				
 				
 				$title =
 				$title =
+					$this->titledots(
+						$this->fuckhtml
+						->getTextContent(
+							$title[0]
+						)
+					);
+				
+				// get url
+				$sprobe =
 					$this->fuckhtml
 					$this->fuckhtml
-					->getElementsByAttributeValue(
-						"role",
-						"link",
-						"div"
+					->getElementsByTagName(
+						"a"
 					);
 					);
 				
 				
-				if(count($title) === 0){
+				$link = null;
+				
+				foreach($sprobe as $possible_link){
+					
+					if(
+						isset($possible_link["attributes"]["href"]) &&
+						preg_match(
+							'/^\/url\?q=/',
+							$possible_link["attributes"]["href"]
+						)
+					){
+						
+						$link =
+							$this->fuckhtml
+							->getTextContent(
+								$possible_link["attributes"]["href"]
+							);
+						
+						break;
+					}
+				}
+				
+				if($link === null){
 					
 					
 					// should not happen
 					// should not happen
 					continue;
 					continue;
 				}
 				}
 				
 				
-				$title =
-					$this->titledots(
-						$this->fuckhtml
-						->getTextContent(
-							$title[0]
-						)
-					);
-				
 				// get description
 				// get description
 				// as usual, theres a thousand fucking possible divs for this one
 				// as usual, theres a thousand fucking possible divs for this one
 				
 				
@@ -968,7 +989,7 @@ class google{
 				$out["web"][] = [
 				$out["web"][] = [
 					"title" => $title,
 					"title" => $title,
 					"description" => $description,
 					"description" => $description,
-					"url" => $this->unshiturl($sprobe[0]["attributes"]["href"]),
+					"url" => $this->unshiturl($link),
 					"date" => $time,
 					"date" => $time,
 					"type" => "web",
 					"type" => "web",
 					"thumb" => $thumb,
 					"thumb" => $thumb,