Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 21

Парсер загружает только первую ссылку со страницы

18.01.2017, 00:38. Показов 997. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго всем дня, столкнулася з такой проблемой что написаный мной парсер вытягивает только 1 ссылку хотя должен тащить все.
Может кто то знает как подправить. Зарание спасибо

Python
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import requests
from lxml import html
import urllib.parse
import urllib.request
 
class VashMagaz(object):
 
    RESULT = []
 
    def parse_vashmagaz_run(self):
        url = 'https://vashmagazin.ua/nerukhomist/kvartyry/'
        r = requests.get(url)
        res = html.fromstring(r.content)
        result = res.xpath(u'//*[contains(text(), "120")]/@href')
        num = self._get_page_num(result[0])
        result = self.get_page_data(num)
        return result
 
    def get_page_data(self, num):
        url = 'https://vashmagazin.ua/nerukhomist/kvartyry/?item_price1=&item_price2=&page={}'
        for i in range(1, num):
            r = requests.get(url.format(i))
            self.get_all(r.content)
        return self.RESULT
 
    def _get_page_num(self,href):
        result = urllib.parse.urlparse(href)
        result = urllib.parse.parse_qs(result.query)
        return int(result['page'][0])
 
    def get_all(self, data):
        data = self._get_desc(data)
        for key, i in enumerate(data):
            text = i.xpath('.//h3[@class="ner_h3"]/a/text()')
            href = i.xpath('.//h3[@class="ner_h3"]/a/@href')[key]
            self.RESULT.append({'text': text,
                                'href': 'https://vashmagazin.ua/' + href,
                                })
 
 
    def _get_desc(self, data):
        return self.get_from_xpath(data, '//*[@id="price"]')
 
    def get_from_xpath(self, data, xpath):
        res = html.fromstring(data)
        return res.xpath(xpath)
 
if __name__ == '__main__':
    magaz = VashMagaz()
    magaz.parse_vashmagaz_run()
    msg = u'Subject: Квартири'+"\n"
    for res in magaz.RESULT:
        f  = open('data.txt','w')
        for k,i in res.items():
            f.write(str(res[k]))
 
    for res in magaz.RESULT:
        for k, i in res.items():
            msg+=str(res[k]).strip()+"\n"
        msg+='\n'
print(msg)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.01.2017, 00:38
Ответы с готовыми решениями:

webbrowser Не загружает первую ссылку
После нажатия кнопки браузер виснит 10 секунд и загружает вторую ссылку. Заранее благодарен за помощь. procedure...

Код загружает из файла только первую строку
вот код,он загружает из файла данные и загружает их в стрингрид.но зак\гружает только первую строчку файла

Как сделать, чтобы парсер выводил не только название и ссылку на него, а еще и цену
Имеется парсер для сайта авито. На данный момент он парсит название объявления и ссылка на него, код класса: using System; using...

2
20 / 21 / 6
Регистрация: 30.06.2015
Сообщений: 431
20.01.2017, 21:20
iwan wan, а зачем вам urllib, если не секрет?
отладкой пробовали пользоваться?
0
 Аватар для Wi0M
395 / 123 / 48
Регистрация: 26.10.2013
Сообщений: 734
21.01.2017, 21:50
Python
1
2
3
4
5
6
7
8
import requests
from bs4 import BeautifulSoup
 
doc = requests.get('https://vashmagazin.ua/nerukhomist/kvartyry/')
elems = BeautifulSoup(doc.content, "html.parser").find_all('h3', {"class": "ner_h3"})
for elem in elems:
    print(elem.a.text)
    print(elem.a['href'])
суть в том чтобы не искать каждую ссылку по xpath, а получить все элементы разом и обращаться к их аттрибутам

Добавлено через 1 минуту
вот xpath ".//h3[@class="ner_h3"]/a", он найдет все интересующие вас элементы
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.01.2017, 21:50
Помогаю со студенческими работами здесь

Спарсить только каждую первую ссылку каждого столбца div с сайта
Сайт: https://www.fancode.com/cricket/schedule/results Описание: мне нужно взять ссылки, только с каждого первого блока. Как это сделать...

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

Как реализовать на php ссылку с = адресом страницы только без домена
У меня есть страница скажем сайт http://cyberforum.ru/1/1.html мне нужна ссылка на странице (она будет стоять в подвале) на мобильную...

Нужно сделать так чтобы парсер собирал инфу не только с 1 страницы ,а и со всех остальных ,что нужно исправить ?
import logging import collections import csv import requests import bs4 logging.basicConfig(level=logging.DEBUG) logger =...

Парсер страницы выводящий основное содержимое страницы
Здравствуйте! Нужно написать парсер, который анализирует содержимое страницы по указанному URL и выводит ту часть, где заключена основная...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru