2013-11-12 3 views
4

Я веб соскабливания новостей сайта, чтобы получать новости, статьи, используя следующий код:Dont Want пробелы между абзацами: Python

import mechanize 
from selenium import webdriver 
from bs4 import BeautifulSoup 

url = "http://www.thehindu.com/archive/web/2012/06/19/" 

link_dictionary = {} 
driver = webdriver.Firefox() 
driver.get(url) 
soup = BeautifulSoup(driver.page_source) 

for tag_li in soup.findAll('li', attrs={"data-section":"Editorial"}): 
    for link in tag_li.findAll('a'): 
     link_dictionary[link.string] = link.get('href') 
     print link_dictionary[link.string] 
     urlnew = link_dictionary[link.string] 

     brnew = mechanize.Browser() 
     htmltextnew = brnew.open(urlnew).read() 

     articletext = "" 
     soupnew = BeautifulSoup(htmltextnew) 
     for tag in soupnew.findAll('p'): 
      articletext += tag.text 
     print articletext 


driver.close() 

я получаю желаемый результат, но я хочу конкретную статью новостей в одной линия. Для некоторых статей я получаю всю статью в одной строке, в то время как в других я получаю разные абзацы. Может кто-нибудь помочь мне разобраться в проблеме? Я новичок в программировании на питоне. Спасибо и с уважением.

ответ

1

Это, скорее всего, связано с тем, как управление пробелами управляется в HTML-файле конкретного сайта, и тем фактом, что не все сайты будут использовать теги «p» для своего контента. Лучше всего, вероятно, сделать замену регулярного выражения, которая устраняет лишние пробелы (включая символы новой строки).

В начале файла, импортировать regular expression module:

import re 

Тогда после того, как вы создали свой articletext, добавьте следующий код:

print re.sub('\s+', ' ', articletext, flags=re.M) 

Вы также можете извлечь текст из других элементов, которые могут содержаться внутри.

+0

где и как следует определять 're' ?? –

+0

сайт, который я использую, использует 'p' теги для его содержимого. Кроме того, для каждого тега 'p' я получаю новую строку для некоторых статей и не получаю для других. Я хочу, чтобы эта проблема была решена. Вы можете мне помочь? –

+0

спасибо, это помогло. –

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