¿Cómo analizar los datos de Google Alerts?

En primer lugar, ¿cómo obtendría la información de Google Alerts en una base de datos que no sea analizar el texto del mensaje de correo electrónico que Google le envía?

Parece que no hay una API de Google Alerts.

Si debe analizar el texto, ¿cómo haría para analizar las piezas relevantes del mensaje de correo electrónico?

Cuando crea la alerta, establezca “Entregar a” en “Feed” y luego puede consumir el XML de la fuente como lo haría con cualquier otra fuente. Esto es mucho más fácil de analizar y resumir en una base de datos.

class googleAlerts{ public function createAlert($alert){ $USERNAME = 'XXXXXX@gmail.com'; $PASSWORD = 'YYYYYY'; $COOKIEFILE = 'cookies.txt'; $ch = curl_init(); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_COOKIEJAR, $COOKIEFILE); curl_setopt($ch, CURLOPT_COOKIEFILE, $COOKIEFILE); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); curl_setopt($ch, CURLOPT_TIMEOUT, 120); curl_setopt($ch, CURLOPT_URL, 'https://accounts.google.com/ServiceLogin?hl=en&service=alerts&continue=http://www.google.com/alerts/manage'); $data = curl_exec($ch); $formFields = $this->getFormFields($data); $formFields['Email'] = $USERNAME; $formFields['Passwd'] = $PASSWORD; unset($formFields['PersistentCookie']); $post_string = ''; foreach($formFields as $key => $value) { $post_string .= $key . '=' . urlencode($value) . '&'; } $post_string = substr($post_string, 0, -1); curl_setopt($ch, CURLOPT_URL, 'https://accounts.google.com/ServiceLoginAuth'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string); $result = curl_exec($ch); if (strpos($result, '') === false) { return false; } else { curl_setopt($ch, CURLOPT_URL, 'http://www.google.com/alerts'); curl_setopt($ch, CURLOPT_POST, 0); curl_setopt($ch, CURLOPT_POSTFIELDS, null); $result = curl_exec($ch); curl_setopt($ch, CURLOPT_URL, 'http://www.google.com/alerts/create'); curl_setopt($ch, CURLOPT_POST, 0); $result = curl_exec($ch); //var_dump($result); $result = $this->getFormFieldsCreate($result); $result['q'] = $alert; $result['t'] = '7'; $result['f'] = '1'; $result['l'] = '0'; $result['e'] = 'feed'; unset($result['PersistentCookie']); $post_string = ''; foreach($result as $key => $value) { $post_string .= $key . '=' . urlencode($value) . '&'; } $post_string = substr($post_string, 0, -1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string); $result = curl_exec($ch); curl_setopt($ch, CURLOPT_URL, 'http://www.google.com/alerts/manage'); $result = curl_exec($ch); if (preg_match_all('%'.$alert.'(?=).*?<a href=[\'"]http://www.google.com/alerts/feeds/([^\'"]+)%i', $result, $matches)) { return ('http://www.google.com/alerts/feeds/'.$matches[1][0]); } else { return false; } } } private function getFormFields($data) { if (preg_match('/(<form.*?id=.?gaia_loginform.*?<\/form>)/is', $data, $matches)) { $inputs = $this->getInputs($matches[1]); return $inputs; } else { die('didnt find login form'); } } private function getFormFieldsCreate($data) { if (preg_match('/(<form.*?name=.?.*?<\/form>)/is', $data, $matches)) { $inputs = $this->getInputs($matches[1]); return $inputs; } else { die('didnt find login form1'); } } private function getInputs($form) { $inputs = array(); $elements = preg_match_all('/(<input[^>]+>)/is', $form, $matches); if ($elements > 0) { for($i = 0; $i < $elements; $i++) { $el = preg_replace('/\s{2,}/', ' ', $matches[1][$i]); if (preg_match('/name=(?:["\'])?([^"\'\s]*)/i', $el, $name)) { $name = $name[1]; $value = ''; if (preg_match('/value=(?:["\'])?([^"\'\s]*)/i', $el, $value)) { $value = $value[1]; } $inputs[$name] = $value; } } } return $inputs; } } $alert = new googleAlerts; echo $alert->createAlert('YOUR ALERT');</a> 

Devolverá el enlace a RSS de su alerta recién creada