2014-02-20 4 views
0

, пожалуйста, помогите исправить сценарий.как искать фразу с использованием регулярных выражений?

import urllib 
import re 
import os 
import pprint 

import requests 
import bs4 

stringHtml = urllib.request.urlopen('http://forum.saransk.ru/user/2018-sergey-kalinin/').read().decode('utf-8') 
#print(stringHtml) 
stringPattern = 'url\suid"\shref="http://vkontakte.ru/id10550933"' 
result = re.search(stringPattern, stringHtml) 
if result: 
    print(result.group()) 
else: 
    print('no result') 

проблема заключается в том, что сценарий отображает «нет результата». правильно скомпилированное регулярное выражение. помогите найти ошибку

ответ

3

Почему вы не используете bs4?

Если вы хотите напечатать href атрибут a элемента с классом uid и url, вы можете использовать select method (which accept css selector).

import urllib.request 

import bs4 

stringHtml = urllib.request.urlopen('http://forum.saransk.ru/user/2018-sergey-kalinin/').read()#.decode('utf-8') 
soup = bs4.BeautifulSoup(stringHtml) 
for a in soup.select('a.url.uid'): 
    print(a.get('href')) 

# If you want to check whether the a tag with `href="http://vkontakte..."` exist, 
# use following lines instead. 
# (CSS Selector `a.url.uid[href="..."]` does not work with bs4. 
# bs4 supports most commonly-used CSS selectors, not all of them) 
#print(any(a.get('href') == 'http://vkontakte.ru/id10550933' 
#  for a in soup.select('a.url.uid'))) 

выход:

http://vkontakte.ru/id10550933 
+0

Я думаю, что он пытается проверить, существует ли это, положил да, это лучший способ, чем регулярное выражение. –

+1

@ RyanO'Donnell. Если это то, что хочет OP, заменив две последние строки на 'print (any (a.get ('href') == 'http://vkontakte.ru/id10550933' для a в soup.select ('a.url.uid'))) 'выполнит эту работу. – falsetru

+0

спасибо, но я знаю, как использовать модуль «beautifulSoup». Теперь мне любопытное решение регулярными выражениями – Sergey

0

Я уверен, что у вас есть ошибка в вашем регулярном выражении. Вы ищете текст:

URL Uid»HREF: //vkontakte.ru/id10550933"

Похоже пробельную ошибкой?

0

Источник страницы показывает

<a class="url uid" rel="external me" href="http://vkontakte.ru/id10550933">http://vkontakte.ru/id10550933</a> 

так, что вы хотите что-то вроде

import bs4 
import requests 

url = 'http://forum.saransk.ru/user/2018-sergey-kalinin/' 
html = requests.get(url).content 
page = bs4.BeautifulSoup(html) 
link = page.find("a", {"class": "url uid"}) 
print(link["href"]) 

который дает

http://vkontakte.ru/id10550933 
Смежные вопросы