2017-02-05 4 views
0

Я хочу извлечь только имя пользователя оригинального сообщения на странице форума. Я не могу понять, как это сделать. Может кто-нибудь мне помочь? В коде у меня есть имя пользователя из исходного сообщения и ответа.Попытка извлечь только первое сообщение со страницы

import bs4 as bs 
import urllib.request 
import pandas as pd 
import urllib.parse 
import re 


#source = urllib.request.urlopen('https://messageboards.webmd.com/').read() 
source = urllib.request.urlopen('https://messageboards.webmd.com').read() 
soup = bs.BeautifulSoup(source,'lxml') 


df = pd.DataFrame(columns = ['link'],data=[url.a.get('href') for url in soup.find_all('div',class_="link")]) 
lists =[] 
page_links = [] 
for i in range(0,1): 
    link = (df.link.iloc[i]) 
    req = urllib.request.Request(link) 
    resp = urllib.request.urlopen(req) 
    respData = resp.read() 
    temp1=re.findall(r'Filter by</span>(.*?)data-pagedcontenturl',str(respData)) 
    temp1=re.findall(r'data-totalitems=(.*?)data-pagekey',str(temp1))[0] 
    pageunm=round(int(re.sub("[^0-9]","",temp1))/10) 
    lists.append(pageunm) 


    for number in range(1, pageunm+1): 
     url_pages = link + '?pi157388622=' + str(number) 
     page_links.append(url_pages) 

lists2=[] 
df1= pd.DataFrame (columns=['page'],data=page_links) 
for j in range (0,9): 
    page = (df1.page.iloc[j]) 
    url = urllib.request.urlopen(page).read() 
    soup1 = bs.BeautifulSoup(url,'lxml') 
    for body_links in soup1.find_all('div',class_="thread-detail"): 
     body= body_links.a.get('href') 
     lists2.append(body) 

usernames=[] 

df2= pd.DataFrame(columns =['post'], data= lists2) 
for y in range(0,26): 
    post=(df2.post.iloc[y]) 
    url_post = urllib.request.urlopen(post).read() 
    soup2= bs.BeautifulSoup(url_post,'lxml') 
    for username in soup2.find_all('div', class_="user-name"): 
     usernames.append([username.get_text().strip()]) 

ответ

0

В последние пару строк, а не перебирает все имена пользователей получают только первые один, как этот

username = soup2.find_all('div', class_="user-name")[0].get_text().strip() 
+0

Большое спасибо за вашу помощь! Некоторое время бил меня – Data1234

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

  • Нет связанных вопросов^_^