Разбор ссылок, содержащих конкретную фразу - PullRequest
0 голосов
/ 09 февраля 2012

У меня есть этот скрипт. Мне нужно, чтобы он только записывал ссылки, содержащие "/product-product/", в файл items.txt. Ну, не ссылка Wohle, но 10 Didget Item-NR продукт-продукт / 1007687980

В примере вы видите, что item-nr это что-то с / 100. Я искал элементы в категории, где nrs что-то с / 100. Но это больше не нужно.

$keyword= $_SERVER['QUERY_STRING'];
$site=1;
while ($site<30) {
$content = file_get_contents('http://www.example.com/?keywords='. $keyword .'&x=0&y=0&pagecount='.$site.'&sort=sort');
$html = $content;
$dom = new DomDocument();
@$dom->loadHTML($html);
$urls = $dom->getElementsByTagName('a');

$lookfor='http://www.example.com';

foreach ($urls as $url){
    if(substr($url->getAttribute('href'),0,strlen($lookfor))==$lookfor){
       $tubeurl = str_replace ("http://www.example.com","",$url->getAttribute('href'));
    $tubeurl = substr($tubeurl, strpos($tubeurl,"/product-product/100")+17, 10);
    file_put_contents("items.txt", "" .$tubeurl. "
", FILE_APPEND | LOCK_EX);// this line must remain, it makes it so that there is a new line  \n wouldn't work

    }
} $site++; echo $site;}

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

1 Ответ

0 голосов
/ 09 февраля 2012

Простое регулярное выражение, которое помещает ваш идентификатор продукта в $ 1, должно сработать.Вы, вероятно, хотите больше логики, чтобы убедиться, что 1 доллар.Модифицировано так, чтобы $ 1 всегда был 10 цифрами.

$keyword= $_SERVER['QUERY_STRING'];
$site=1;
while ($site<30) {
  $content = file_get_contents('http://www.domain.com/?keywords=' . $keyword . '&x=0&y=0&pagecount='.$site.'&sort=sort');
  $html = $content;
  $dom = new DomDocument();
  @$dom->loadHTML($html);
  $urls = $dom->getElementsByTagName('a');

  $lookfor='http://www.domain.com';

  foreach ($urls as $url){
      if(substr($url->getAttribute('href'),0,strlen($lookfor))==$lookfor){
         $tubeurl = str_replace ("http://www.domain.com","",$url->getAttribute('href'));

         preg_match("/^http.*/product-product\/(\d{10})$/", $tubeurl, $matches);



      file_put_contents("items.txt", $1,
        FILE_APPEND | LOCK_EX); // this line must remain, it makes it so that there is a new line  \n wouldn't work

      }
  } 

  $site++;

  echo $site;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...