【问题标题】:scraping messages from a forum从论坛中抓取消息
【发布时间】:2019-05-10 08:21:58
【问题描述】:

这是我的问题,所以我想存储来自 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')

【问题讨论】:

    标签: python-3.x beautifulsoup findall


    【解决方案1】:

    我的法语不是那么好(这是轻描淡写的......)所以从页面的设计方式来看,有时很难分辨哪个消息是顶级消息,哪个是响应,但我相信这段代码应该得到你在那儿:

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

    我真的很想知道这是否有效....

    【讨论】:

      【解决方案2】:

      好吧,我在连续 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)
      
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-25
        • 2017-02-23
        • 1970-01-01
        • 1970-01-01
        • 2019-11-02
        • 1970-01-01
        相关资源
        最近更新 更多