Что нового

[Данные, строки] Поиск ссылок на странице

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
нужна помощь вот в чем есть страница с профилем человека файл прикрепил ниже, на этой странице есть блок "лента" в этом блоке собраны события в виде ссылок в таком формате - описание события, текст ссылки и сама ссылка, этих событий много они находятся на нескольких страницах , у меня не получается собрать все эти события со всех страничек в рамках одного профиля в такой формат ссылка ; текст ссылки ; описание , и выгрузить в файл, помогите одолеть эту трудность
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,320
general66
Вы приведите пример того, что нужно получить.
 
Автор
G

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
madmasles [?]
Вы приведите пример того, что нужно получить.
Вся лента состоит из таких блоков (событий)
Код:
<div class="feed_panel_activity"><span class="feed_capitalize">добавил</span> ​в друзья ​<div class="feed_feedDet"><li class="feed_userCard"><div><div class="feed_uSCNContainer"><div class="feed_uSCNImg"><a href="/profile/332113601946" hrefattrs="st.friendId=olegfleghxymitowc0qhtizwgppbgpdymci&amp;st._aid=Feed_FriendFeed_19_VisitAddedFriend"><span class="nowrap shortcut-wrap"><div class="card avatar"><div class="avatar user"><img src="http://i240.odnoklassniki.ru/getImage?photoId=291682406810&amp;photoType=4" alt=""></div></div></span><div class="hookData" id="hook_ShortcutMenu_341660225"><!--{"showNav":false,"vchatEnabled":false,"strictPosition":"center","closeTimeout":100,"stub":false,"photoMainId":"291682406810","male":false,"fio":"П.Е.В. ~~","isMale":false,"showTimeout":500,"waitTimeout":100,"isPromoUser":false,"userId":"olegfleghxymitowc0qhtizwgppbgpdymci","current":false,"photoLink":"/profile/332113601946?st.friendId\u003dolegfleghxymitowc0qhtizwgppbgpdymci","menuType":"BriefUser","photoSrc":"http://i342.odnoklassniki.ru/getImage?photoId\u003d291682406810\u0026amp;photoType\u003d2"}--></div></a></div><div class="feed_uSCNName breakWord"><a class="feat2" href="/profile/332113601946" hrefattrs="st.friendId=olegfleghxymitowc0qhtizwgppbgpdymci&amp;st._aid=Feed_FriendFeed_19_VisitAddedFriend"><span class="nowrap shortcut-wrap">П.Е.В. ~~</span><div class="hookData" id="hook_ShortcutMenu_341660226"><!--{"showNav":false,"vchatEnabled":false,"strictPosition":"center","closeTimeout":100,"stub":false,"photoMainId":"291682406810","male":false,"fio":"П.Е.В. ~~","isMale":false,"showTimeout":500,"waitTimeout":100,"isPromoUser":false,"userId":"olegfleghxymitowc0qhtizwgppbgpdymci","current":false,"photoLink":"/profile/332113601946?st.friendId\u003dolegfleghxymitowc0qhtizwgppbgpdymci","menuType":"BriefUser","photoSrc":"http://i342.odnoklassniki.ru/getImage?photoId\u003d291682406810\u0026amp;photoType\u003d2"}--></div></a></div></div></div></li></div></div>

из всех событий надо вытянуть
1. эту ссылку на профиль href="/profile/332113601946"
2. этот текст ссылки <span
class="nowrap shortcut-wrap">П.Е.В. ~~</span>
3. и это событие <span
class="feed_capitalize">добавил</span> ​
в друзья ​ текст события может быть разный например:удалил из друзей и т.д.
4. придать найденому форму /profile/332113601946 ; П.Е.В. ; добавил в друзья

еще одна загвоздка вот в чем события могут расположиться на нескольких страницах
Код:
<a class="link" href="/dk?st.cmd=friendFeeds&amp;st.page=2&amp;st.friendId=olegfleghxymitowc0qvewakbdobegfsjsncf">следующая></a>
в рамках этого профиля пользователя надо автоматом собрать события со всех имеющихся страниц.

верхом всего моего щастья будет если такое возможно то добавить дату каждого события она в тексте выглядит так
Код:
<div class="oldFeed feed_panel_date">28 апр</div>
конечный формат будет выглядеть так

/profile/332113601946 ; П.Е.В. ; добавил в друзья ; 28 апр
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,320
general66
Попробуйте так:
Код:
#include <Array.au3>

$sText = FileRead(@ScriptDir & '\html.txt')

$aTempText = StringRegExp($sText, '(?s)feed_standard_mb">(.*?)</div></li>', 3)
Dim $aResult[UBound($aTempText) + 1]
$j = 0
For $i = 0 To UBound($aTempText) - 1
	If $aTempText[$i] Then
		$j += 1
		$aResult[$j] = StringStripWS(StringRegExpReplace(StringRegExpReplace($aTempText[$i], _
				'(?s).*?date">(.*?)<.*capitalize">(.*?)<div.*href="(/profile.*?)\?st.*wrap">(.*?)</span.*', _
				'$3; $2; $4; $1'), '( |​|</span>|[^0-9a-zA-Zа-яА-яёЁ;/])', ' '), 4)
	EndIf
Next
ReDim $aResult[$j + 1]
$aResult[0] = $j
_ArrayDisplay($aResult)
Насчет нескольких страниц не понял.
 
Автор
G

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
madmasles [?]
Насчет нескольких страниц не понял.

ну может видели это когда если много чего то на странице скажем картинок, чтоб не пихать их все на одну страницу, и она не получилась километровой их разбивают на группы скажем по 20 шт, и делают ссылочки с 1 по 20, с 21 по 42 и т.д. когда переходиш по ним странице все не меняется, а подгружаются только новые картинки в этот блок, так же организованы и события, есть на странице ссылка "следующии" при нажатии на нее подгружаются более поздние события и так пока не дойдет до конца т.е. самого первого в ленте. как выглядит эта ссылка в теле страницы я выше показал.

[5]|/profile/153691937492; добавил</span> ​в друзья ​; Евгения Рядинская; 23 апр

[10]|/profile/472719777855; добавил</span> ​в список одноклассников; Ольга Подлесная (В...; 15 апр

это у меня так выглядят ссылки остались кусочки HTML разметки

и еще если прочитать эту страницу так то результат 0 как быть в таком случае?
Код:
$fUrl = "http://www.odnoklassniki.ru/profile/518581155086/feed"
$oIE = _IECreate($sUrl)
$sText = _IEBodyReadHTML($oIE)
$aTempText = StringRegExp($sText, '(?s)feed_standard_mb">(.*?)</div></li>', 3)
Dim $aResult[UBound($aTempText) + 1]
$j = 0
For $i = 0 To UBound($aTempText) - 1
    If $aTempText[$i] Then
        $j += 1
        $aResult[$j] = StringStripWS(StringRegExpReplace(StringRegExpReplace($aTempText[$i], _
                '(?s).*?date">(.*?)<.*capitalize">(.*?)<div.*href="(/profile.*?)\?st.*wrap">(.*?)</span.*', _
                '$3; $2; $4; $1'), '( |?|</span>|[^0-9a-zA-Zа-яА-яёЁ;/])', ' '), 4)
    EndIf
Next
ReDim $aResult[$j + 1]
$aResult[0] = $j
_ArrayDisplay($aResult)
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,320
general66
Там, где у меня квадратик, должно быть '( |&#8203;|</span>|[^0-9a-zA-Zа-яА-яёЁ;/])'

и еще если прочитать эту страницу
Я текст парсил в Вашем файле.
 
Автор
G

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
madmasles [?]
Я текст парсил в Вашем файле.

Не я имел там ввиду что если прочитать страницу на прямую из интернета
Код:
$fUrl = "http://www.odnoklassniki.ru/profile/518581155086/feed"
$oIE = _IECreate($sUrl)
$sText = _IEBodyReadHTML($oIE)


то не чого не находит это можно как то поправить?

а из файла все сейчас прекрано читается
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,320
general66
После нескольких попыток проверки, мой профиль временно заблокировали. :(
 
Автор
G

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
madmasles [?]
После нескольких попыток проверки, мой профиль временно заблокировали.

OffTopic:
Странно я там целыми днями тренируюсь в сборе инфы о пользователях умею друзей и группы собирать собрал с 8 пользователей, даже спам скрипт опробовал 150 сообщений с 2х профилей и не разу не забанили.
 
Верх