2016-05-01 2 views
1

Я не могу понять, почему я получаю эту ошибку. Я следую this tutorial, чтобы извлечь фактический текст. Но я не понимаю ошибки.python2.7.8: TypeError: ожидаемая строка или буфер с bs4 и re

Может ли кто-нибудь взглянуть на мой код?

import urllib 
from bs4 import BeautifulSoup 
import re 


url = "https://en.wikipedia.org/wiki/Python_(programming_language)" # link of website 
html = urllib.urlopen(url).read() # reading and opening link 
soup = BeautifulSoup(html) #parsing 


for script in soup(["script", "style","a","<div id=\"bottom\" >"]): # all tags 
    script.extract() # clear out 


for p in soup.find_all('p'): # loop for printing text 
    r = re.sub("<.*?>", "", p) # expression to get rid from <p> <b> etc 
    print r 

Ошибка:

Traceback (most recent call last): 
    File "C:/Users/DELL/Desktop/python/s/fyp/textextractioon.py", line 16, in <module> 
    r = re.sub("<.*?>", "", p) 
    File "C:\Python27\lib\re.py", line 151, in sub 
    return _compile(pattern, flags).sub(repl, string, count) 
TypeError: expected string or buffer 

ответ

2

изменить свой окончательный цикл для:

for p in soup.find_all('p'): # loop for printing text 
    r = re.sub("<.*?>", "", p.text) # expression to get rid from <p> <b> etc 
    print r 

каждый р от типа класса 'bs4.element.Tag': и имеет ряд встроенных в методы, взгляните так, что вам будет ясно

+0

Эпический чувак thnx !!! – Malik

+0

еще одно я не получаю те слова, которые находятся на ссылке на URL, например, в тексте pikon wikipedia помечен как гиперссылка. так что любая идея, где я делаю неправильно? – Malik

+0

Я не понял q –

Смежные вопросы