Форум сайта python.su
0
Доброго времени суток, форумчане. Работаю с urllib + BeautifulSoup. Поучаю список ссылок так:
for link in soup.find_all('a'): url = link.get('href') print(url)
/home/123 /site/123456 /windows/987 /123/любойнаборцифр /dev/456
Офлайн
103
а какое правило (условие)?
почему именно “/123/любойнаборцифр”?
или же вам нужно получить объект ссылка которого /123/любойнаборцифр?
Отредактировано terabayt (Март 28, 2015 22:02:53)
Офлайн
0
Просто на страничке которую я парсю имееются туча ссылок, среди которых есть ссылка вида: “/123/любойнаборцифр”. Т.е после последнего слэша в ссылке каждый раз может быть рандомное число. Я не знаю как её выудить оттуда. Мне нужно получить просто эту строку(ссылку) на вывод. Надеюсь ответил на ваш вопрос, хоть и не совсем его понял.
Отредактировано IRiot (Март 28, 2015 22:08:17)
Офлайн
103
import re # . . . # ваш код # . . . for link in soup.find_all('a', href=re.compile('^/123/')): url = link.get('href') print(url)
Офлайн
0
Большое спасибо. Проблема решена.
Офлайн
0
Дабы не создавать новой темы, еще вопрос по регуляркам. Имеется строка:
<img class="user" src=//owl.123.ru/pic?data=123123&width=32&height=32>
data = soup.find('img', src = re.compile(r'data=(.+?)&')) a = data.get('src') print(a)
Отредактировано IRiot (Март 29, 2015 00:21:45)
Офлайн
103
IRiotвы получаете src. никакой проблемы нету
В чем проблема?
IRiot
Как это можно решить?
>>> import urllib.parse >>> urllib.parse.parse_qs(urllib.parse.urlparse('//owl.123.ru/pic?data=123123&width=32&height=32').query) {'height': ['32'], 'data': ['123123'], 'width': ['32']} >>> urllib.parse.parse_qs(urllib.parse.urlparse('//owl.123.ru/pic?data=123123&width=32&height=32').query)['data'][0] '123123'
Отредактировано terabayt (Март 29, 2015 00:58:58)
Офлайн
0
Огромное вам спасибо
Офлайн
857
>>> import re >>> >>> s = r'src=//owl.123.ru/pic?data=123123&width=32&height=32' >>> >>> out = re.search(r'data=(\d+)', s).group(1) >>> out '123123' >>>
Офлайн
103
py.user.next
>>> import re >>> s = r'src=//owl.123.ru/pic?lala_no_data=123123&data=9999&width=32&height=32' >>> print re.search(r'data=(\d+)', s).group(1) 123123
Офлайн