从论坛抓取消息

时间:2019-05-10 08:21:58

标签: python-3.x beautifulsoup findall

这是我的问题,所以我想存储来自 forum(messages + id)的数据,如果可以的话,我成功地仅剪贴了不是上一条消息的响应的消息帮帮我,这是我的代码

这是论坛的链接:

http://forum.doctissimo.fr/medicaments/Neuroleptiques/souhaite-arreter-vousdes-sujet_953_1.htm

作为上一条消息的响应的消息的示例(HTML)

<div itemprop="text">
  <p></p>
  <div class="container">
    <div class="citation reducible-citation"><b class="s1"><a href="http://forum.doctissimo.fr/medicaments/Neuroleptiques/souhaite-arreter-vousdes-sujet_953_1.htm#t9835" class="Topic">aut49zm a écrit :</a></b>
      <div class="forum-quote-content">tjs RAS</div>
      <div class="expand-quote" style="display: none;">Afficher plus</div>
      <div class="reduce-quote">Afficher moins</div>
    </div>
  </div>
  <p><br><br><br>Ca fait 2 semaines aujourd'hui que je l'ai arrêté et RAS. Ca devrait être pareil pour toi &nbsp;<img title=":)" alt=":)" src="http://images.doctissimo.fr/generated/merged/flat/design/smilies/smile.gif" class="wysiwyg_smiley"> </p>
  <div class="clear"></div>
  <p></p>
</div>

正常消息的示例(HTML):

<div id="para9835" class="post_content">
  <div itemprop="text">tjs RAS
    <div class="clear"></div>
  </div>
  <div class="edited">

这是我的代码:

from bs4 import BeautifulSoup
import urllib.request


page=urllib.request.urlopen("http://forum.doctissimo.fr/medicaments/Neuroleptiques/souhaite-arreter-vousdes-sujet_953_1.htm") 

strpage=page.read().decode(page.headers.get_content_charset())
soup=BeautifulSoup(strpage,'html.parser')

for e in soup.findAll('br'):
    e.extract()

u=soup.prettify()
v=soup.findAll('div','post_content')

2 个答案:

答案 0 :(得分:0)

我的法语不好(这是一个轻描淡写的问题……),因此从页面的设计方式来看,有时很难分辨出哪条消息是最高级别的,而哪条是响应,但是我认为应该获得此代码你在那里:

for e in soup.find_all('div',class_='post_content'):
for j in  e:
    if not e.find('div',class_='citation'):
        print(j.text)

我真的很好奇这是否可行......

答案 1 :(得分:0)

好吧,我连续48小时发现了它(我是从网上抓取开始)。

    from bs4 import BeautifulSoup
    import urllib.request
    page=urllib.request.urlopen("http://forum.doctissimo.fr/medicaments/Neuroleptiques   /souhaite-arreter-vousdes-sujet_953_1.htm")
     soupe = BeautifulSoup(page, 'lxml')

       elem1 = soupe.find_all('div', attrs={'itemprop': 'text'})
     #print(elem1)
    for elem2 in elem1:
        print("-"*50)
        print(elem2.text)
        print("-"*50)