Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

   Рубрики
 
 
 
 

 Форуми
» SEO и оптимизация
» Всичко за PHP и Perl
» Всичко за C, C++ и .NET
» Всичко за Java и JSP
» Всичко за SQL и MySQL
» Всичко за XHTML и CSS
» Презентация на сайтове
 Извличане на хиперлинкове от уеб страница чрез PHP
  1. Web scraping
  2. Завършеният код
     
Автор  plamenSm (08.03.2008 19:00)  съобщение до автора
Погледнат  3359 пъти  добави към любими
Оценка  добави коментар
Гласове  --  изпрати на приятел
Коментари  (4)  абонирай се за PHP
    Страница 2 / 2

 



И накрая – завършения код:

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
function storeLink($url, $gathered_from) {
   
$query = "INSERT INTO links
                (url, gathered_from)
            VALUES
                ('
$url', '$gathered_from')";
   
mysql_query($query) or die('Error, insert query failed');
}

$target_url = "http://www.merchantos.com/";
$userAgent = 'Googlebot/2.1 (http://www.googlebot.com/bot.html)';

// Правим cURL заявка към $target_url
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
curl_setopt($ch, CURLOPT_URL, $target_url);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);

$html = curl_exec($ch);

if (!$html) {
   
echo "<br />cURL error number:" . curl_errno($ch);
   
echo "<br />cURL error:" . curl_error($ch);
   
exit;
}

// разбор (parse) html в DOMDocument
$dom = new DOMDocument();
@
$dom->loadHTML($html);

// взимаме цялата страница
$xpath = new DOMXPath($dom);
$hrefs = $xpath->evaluate("/html/body//a");

for ($i = 0; $i < $hrefs->length; $i++) {
   
$href = $hrefs->item($i);
   
$url = $href->getAttribute('href');
   
storeLink($url, $target_url);
   
echo "<br />Link stored: $url";
}
?>

Какво още трябва да се знае за това

Възможностите са донякъде ограничени.

За да започнете, трябва първо да запишете в таблица от базата данни, сайтовете от които искате да извлечете линковете. Да направите скрипт, който периодично да пуска събирането на линковете. Така ще можете да виждате промените и евентуално да променяте линковете, ако ги използвате на ваши сайтове. Нека да видим и някои примери в които се използва тази технология:

  • Създаване на софтуери за търсене
  • Анализиране SEO оптимизацията на уебсайтове
  • Публикуване на автоматично съдържание от други уебсайтове
  • Създаване на RSS канали от съдържанието на уебсайтове

Законно ли е събирането на хиперлинкове?

Няма точен отгвор. Много организации, като Google, Yahoo, Microsoft и много други го правят. Притежателите на уеб страници сами желаят да бъдат включени в резултатите от търсенето в съответните търсачки. Но те сами декларират съгласие за това.

Реалния отговор е – кой и за какво събира линкове.

Законите за авторско право дават подразбиращо се право на собственост върху разработеното от и на техните автори. Но същите закони допускат използването на защитени с авторско право материали за специални случаи. Тези случаи включват използване на материалите за преценка от компетентни органи, коментари в медиите, обучение (включително размножаване на материала с учебна цел) и други. Но тези действия понякога представляват нарушение на авторското право.

Така, че бъдете внимателни, преди да ги използвате!



 << Предишна страница  


Ключови думи: PHP уеб страница cURL извличане на хиперлинкове


Още уроци от тази рубрика


 
  • Подобни теми от myLinks
 

 1 посетител чете този урок (0 потребители и 1 гост)  
Активни потребители: ---
   
  

Еmail  
 

С правилният reg exp ;)
preg_match_al("/^[a-z0-9]...../" ....);
Има достатъчно примери из интернет и документацията на РНР.

  PureEvil на 21.03.2008 10:10

а как се извличат е меил адреси ?

  a1b2 на 19.03.2008 14:22

Да се представяш за бот, който не си би ти довело само главоболия. Повечето хора следят какво става със сайтовете им, а ти няма как да кажеш че си бота, защото нямаш IP-тата на Google ;).
Ползването на @ е тотално тотално непрепоръчително! Защо просто не ползваш error_reporting() ?!?
Може да си фен на DOM, но в случая един preg_match_all просто ще се справи по бързо с намирането на нужните резултати.

storeLink() също не е достатъчно оптимална. Примерно синтаксисът: INSERT INTO ... VALUES (1, 2), (2, 1), (3, 44) е по-удачен.

Ако не е нужно да се симулира потребител(било то някоя търсачка или потребител), file_get_contents() ще сработи по бързо от cURL метода.

@iwanov просто една маска и preg_match_all достъчно просто и бързо решение ;).

  PureEvil на 09.03.2008 16:21

Урока е супер. Искам само да попитам да речем че искам да извлека и да запиша линкове който завършват само на .gif примерно (демек линковете към снимки) ?

Поздрави

  iwanov на 08.03.2008 22:58

 

 
  • Интересно от Софтуер
 



IT-PLACE.NET © 2004 - 2008