Python使用复杂论坛中的beutifulsoup来抓取上次发布日期

时间:2017-02-07 18:04:37

标签: python web-scraping beautifulsoup

所以我试图从一个论坛中抓取一些数据(特别是上一篇文章的DATE),与这个确切的论坛的其他元素一起工作得很好但是日期元素有超级奇怪的类,无论我添加了多少元素,我不能专门定位它只能得到它一次..

这是我的代码段,用于仅获取上一篇文章的日期。

import re
import urllib
import os

from bs4 import BeautifulSoup
from pip._vendor import requests


def make_soup(url):
   thepage = urllib.request.urlopen(url)
   soupdata = BeautifulSoup(thepage, "html.parser")
   return soupdata

soup2 = make_soup('http://forums.automotive.com/69/1052/general-auto-repair/page1.html')

lPostDate = ""

for postDate2 in soup2.findAll('td', {"class": "brdr1 pad10_20 bgrnd19"}):
    lPostDate += (postDate2.get_text("\n", strip=True)[0:10] + "\n")
    print(lPostDate)

然而,每次都是我的输出:

10/06/15 0

10/06/15 0
137

10/06/15 0
137
49976

10/06/15 0
137
49976
02/04/17 1

10/06/15 0
137
49976
02/04/17 1
1

10/06/15 0
137
49976
02/04/17 1
1
130

10/06/15 0
137
49976
02/04/17 1
1
130
01/30/17 0

10/06/15 0
137
49976
02/04/17 1
1
130
01/30/17 0
0

10/06/15 0
137
49976
02/04/17 1
1
130
01/30/17 0
0
145

这将持续1080线...任何提示将不胜感激。使用" re.compile"与其他论坛一起完成并且这种方法非常好,但是这个论坛在命名它的元素方面更加挑剔。

1 个答案:

答案 0 :(得分:2)

for tr in soup2.findAll('tr', id=re.compile('Thread')):
    text = tr('td')[2].get_text(strip=True)
    date = text.split('By')[0]  # strip the By:...
    print(date)

出:

10/06/15 05:47 PM
02/04/17 11:58 PM
01/30/17 08:44 PM
01/26/17 12:44 AM
01/22/17 06:25 PM
01/19/17 02:23 PM
01/18/17 10:52 PM
01/18/17 04:57 PM
01/17/17 04:15 PM
01/17/17 04:12 PM
01/14/17 08:34 PM
01/12/17 08:00 PM
01/10/17 02:21 PM
01/10/17 01:00 PM
01/08/17 11:45 PM