2017-04-06 2 views
0

웹 페이지의 텍스트를 긁어내어 텍스트의 문장/단락을 구성하는 각 단어로 구성된 단일 문자열로 출력하려고합니다. 그러나 나는 개별 문장/단락을 연결하는 것처럼 보이지 않는다. 공백이나 줄 바꿈이 원인 일 수도 있지만 같은 문제에서 그 결과를 제거하려고 시도했을 수도 있습니다.파이썬으로 단일 문자열로 웹 스크랩

누군가 내 코드를보고 내가 뭘 잘못하고 있다고 설명 할 수 있습니까? (설명은 매우 도움이된다 그래서 나는 완전히 보정을 이해할 수 있습니다.) 여기

내 코드입니다 :

import requests, re, json 
from bs4 import BeautifulSoup 

urls = ['http://t24.com.tr/haber/suriyelilere-vatandasliga-neden-karsi-cikiliyor,348652', 'http://t24.com.tr/haber/oteki-suriyeliler-turkiye-vatandasi-olursak-askere-gideriz-akpye-oy-verir-miyim-bilmiyorum,349206', 'http://t24.com.tr/haber/konyada-turklerle-suriyeliler-arasinda-kopege-niye-tekme-attin-kavgasi-3-olu-2-yarali,349208'] 


for url in urls: 
    html = requests.get(url).text 
    soup = BeautifulSoup(html, "html.parser") 

paragraphs = soup.findAll('p', {"class" : "p1"}) 
for p in paragraphs: 
    text = p.text.replace(',', '').replace('"', '').replace('.', '').replace("'", "").replace('?', '').replace("\n", "").replace('\r', '') 
    print(text) 

내 출력은 다음과 같습니다

Selin Girit                            
Kendi ülkesinde savaştan kaçacak sınavsız okula girip askerlik yapmayacak 10 yıl sonra benden iyi yaşayacak #ÜlkemdeSuriyeliİstemiyorum     
Cumhurbaşkanı Recep Tayyip Erdoğanın Türkiyede yaşayan Suriyeli mültecilere 

내가 원하는 것은 이 :

답변

0

우선 : 처음에는 각 URL에 대해 새 수프를 만듭니다. 각각의 수프를 가지고 무엇인가를하기 전에 p. 따라서 코드를 사용하면 마지막 url의 텍스트 만 urls에 있습니다. 우선해야 할 일은 url-loop 안에 단락 루프를 넣는 것입니다.

soup.findAll()은 모든 p 태그가 페이지에있는 반복자 paragraphs을 반환합니다. 단락을 반복하기 전에 빈 문자열 full_string을 만든 다음이 빈 문자열에 각 단락을 추가하여 원하는 결과를 얻을 수 있습니다. 아래.

for url in urls: 
    html = requests.get(url).text 
    soup = BeautifulSoup(html, "html.parser") 

    full_text = '' 
    paragraphs = soup.findAll('p', {"class" : "p1"}) 
    for p in paragraphs: 
     text = p.text.replace(',', '').replace('"', '').replace('.', '').replace("'", "").replace('?', '').replace("\n", "").replace('\r', '') 
     full_text += text 

    print text