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

Парсинг

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


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

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

Парсинг видео
Хочу сделать просто парсер видео. Но вот бЯда. На большинства сайтах стоит защита. Хешированная...

Парсинг с авторизацией
мне нужно собирать информацию со своего аккаунта на определенном сайте, делаю так $url=&quot;some...

Парсинг сайтов
Добрый день, такая ситуация: делаю парсер нескольких сайтов. парсю с помощью simple_html_dom.php...

5
665 / 636 / 335
Регистрация: 26.04.2014
Сообщений: 2,114
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
49 / 39 / 5
Регистрация: 30.06.2010
Сообщений: 1,191
12.07.2014, 12:43  [ТС] 3
alexsamos33, Если делать так, то могут быть ведь и до этого дивы. т.е. ">" встречается и до нужного места.
а регулярками если можно сделать, то может кто помочь?
0
665 / 636 / 335
Регистрация: 26.04.2014
Сообщений: 2,114
12.07.2014, 12:56 4
регулярка:
PHP
1
"/\<div.*?class\=?\.\.\.?.*?\>(.*?)\<\/div\>/si"
0
1932 / 1761 / 822
Регистрация: 23.01.2014
Сообщений: 6,205
12.07.2014, 16:17 5
Цитата Сообщение от alexsamos33 Посмотреть сообщение
регулярка:
вряд ли там многоточие на самом деле стоит у класса
Цитата Сообщение от ProstoMad Посмотреть сообщение
а регулярками если можно сделать, то может кто помочь?
для этого нужно чтобы вы показали какую именно часть строки, из какой именно строки Вы хотите получить, какие у нее возможны варианты, что у нее меняется\не меняется, что в ней обязательно должно присутствовать...
0
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.07.2014, 18:27

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

Многопоточный парсинг
Надо предположительно раз в неделю делать запросы на 20.000 сайтов, после чего приходящие...

PHP парсинг
Всем привет! Возникла проблема, ранее все работало хорошо, просто в один прекрасный момент...

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

парсинг prom.ua
Здравствуйте, на днях захотел попрактиковать парсинг с помощью curl на примере prom.ua, парсил...


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

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

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