Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: сети
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
ProstoMad
49 / 39 / 5
Регистрация: 30.06.2010
Сообщений: 1,191
1

Парсинг

12.07.2014, 00:47. Просмотров 720. Ответов 5

Мне надо спарсить несколько значений(10-20) со спарсенной страницы. Все значения на страницы я ищу по их дивам. т.е. примерно так..
где "25" это количество символов, после pos1 до нужного значения
PHP
1
$pos1 = strpos($page, "<div class=...>")+25
Может и коряво, но работает... до определенного момента. В некоторых случаях встречаются в диве дополнительные атрибуты, такие как style, и соответственно число 25 уже тут не подходит. Как тогда парсить значение?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.07.2014, 00:47
Ответы с готовыми решениями:

Парсинг
Привет. Пытаюсь спарсить меню. Меню на первой странице парсится. Но, меню вложенное и чтобы...

парсинг
Всем привет. Вот такая есть ссылка . Там есть фотки, Мне надо вытащить все ссылки которые...

Парсинг
Добрый день! Хотелось бы узнать, как можно просматривать данные по этой ссылке:...

Парсинг
Зачем нужен парсинг?? от мне говорят получи данные из бд и распарси их, как это понимать? я читаю...

Парсинг контента
Здравствуйте, вопрос такой: хочется выводить на сайте погоду, данные о погоде брать хочу отсюда...

5
alexsamos33
655 / 627 / 333
Регистрация: 26.04.2014
Сообщений: 2,098
12.07.2014, 07:52 2
PHP
1
$pos1 = strpos($page, "<div class=...>") + strpos($page, "</div>")
Добавлено через 1 минуту
Или так:
PHP
1
$pos1 = strpos($page, "<div class=...>") + strpos($page, ">")
Добавлено через 50 секунд
Или вообще регулярным вырожением (там можно поставить .*?)...
0
ProstoMad
49 / 39 / 5
Регистрация: 30.06.2010
Сообщений: 1,191
12.07.2014, 12:43  [ТС] 3
alexsamos33, Если делать так, то могут быть ведь и до этого дивы. т.е. ">" встречается и до нужного места.
а регулярками если можно сделать, то может кто помочь?
0
alexsamos33
655 / 627 / 333
Регистрация: 26.04.2014
Сообщений: 2,098
12.07.2014, 12:56 4
регулярка:
PHP
1
"/\<div.*?class\=?\.\.\.?.*?\>(.*?)\<\/div\>/si"
0
pav1uxa
1894 / 1735 / 816
Регистрация: 23.01.2014
Сообщений: 6,147
Завершенные тесты: 1
12.07.2014, 16:17 5
Цитата Сообщение от alexsamos33 Посмотреть сообщение
регулярка:
вряд ли там многоточие на самом деле стоит у класса
Цитата Сообщение от ProstoMad Посмотреть сообщение
а регулярками если можно сделать, то может кто помочь?
для этого нужно чтобы вы показали какую именно часть строки, из какой именно строки Вы хотите получить, какие у нее возможны варианты, что у нее меняется\не меняется, что в ней обязательно должно присутствовать...
0
ProstoMad
49 / 39 / 5
Регистрация: 30.06.2010
Сообщений: 1,191
12.07.2014, 18:27  [ТС] 6
Извиняюсь, не правильно посмотрел. Суть в том, что я парсил таким способом магазин Dota2 В стиме. парсил название предмета, путь картинки и цену. но начиная с определенного номера предмета, примерно около сотого предмета, парсится криво.
PHP
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
46
for($hundred=1;$hundred<120;$hundred++)
{
    $start=$count;
    $count=$count+100;
    $ch=curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://steamcommunity.com/market/search/render/?query=&start=$start&count=$count&search_descriptions=0&sort_column=quantity&sort_dir=desc&appid=570");
 
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_COOKIE, "Steam_Language=russian;steamLogin={КУКИ С САЙТА СТИМА}");
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
    $page = json_decode(curl_exec($ch))->results_html; //Получена страница
 
    curl_close($ch);
 
    //===================Парсинг=====================
    $pos1 = true;
    while($pos1)
    {   
        $pos1 = strpos($page,'market_listing_row');
        $pos2 = strpos($page, 'market_listing_game_name');
        $posImg1 = strpos($page, "image/")+6;
        $posImg2 = strpos($page,"62fx62f")+7;
        $image = "<img src='http://cdn.steamcommunity.com/economy/image/".substr($page, $posImg1, $posImg2-$posImg1)."' />";
        $page = substr($page, $posImg2);
 
        $posPrice1 = strpos($page, "white")+7;
        $posPrice2 = strpos($page, "market_arrow_down")-54;
        $price = substr($page, $posPrice1, $posPrice2-$posPrice1);
        $page = substr($page, $posPrice2);
 
        $posName1 = strpos($page, "market_listing_item_name")+119;
        $posName2 = strpos($page, "market_listing_game_name")-35;
        $name = substr($page, $posName1, $posName2-$posName1);
        
        $page = substr($page, $pos2);
        echo $i++."<br>";
        echo $name;
        echo "<br>";
        echo $image;
        echo "<br>";
        echo htmlspecialchars($price);
        echo " руб.<br/>==============================================================<br/>";
        
    }
 
}
0
12.07.2014, 18:27
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.07.2014, 18:27

Парсинг google
Доброго времени суток! Пытаюсь парсить гугл, точнее с парсингом проблем нет, если бы не капча. С...

Парсинг текста
Здравствуйте. Хотел спросить насчет парсинга. Как можно спарсить, например такой словарь...

Парсинг изображений
Добрый вечер. Хотело бы узнать, как можно парсить изображения с одного сайта, но разных ссылок....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.