首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拾取(next_siblings)文本

拾取(next_siblings)文本
EN

Stack Overflow用户
提问于 2014-02-05 09:08:46
回答 1查看 314关注 0票数 0

(环境:Python2.7+ BeautifulSoup 4.3.2)

目的:取代码中的文字“2009年1月23日下午12:05”。

由于公司网站中的网页需要登录和重定向,所以我将目标页面的源代码复制到一个文件中,并将其保存为C:\中的“example.html”,以便于练习。

这是原始代码的一部分:

代码语言:javascript
复制
<tr class="ghj">
  <td>
    <span class="city-sh">
      <sh src="./citys/1.jpg" alt="boy" title="boy" />
    </span>
    <a href="./membercity.php?mode=view&amp;u=12563">port_new_cape</a>
  </td>
  <td class="position">
      <a href="./search.php?id=12563&amp;sr=positions"
        title="Search positions">452</a>
  </td>
  <td class="details">
      <div>South</div>
  </td>
  <td>May 09, 1997</td>
  <td>Jan 23, 2009 12:05 pm&nbsp;</td>
</tr>

到目前为止我想出的密码是:

代码语言:javascript
复制
url = r"C:\example.html"
page = open(url)
soup = BeautifulSoup(page.read())

cities = soup.find_all('td', {'class' : details}) 
sis = cities.find_next_siblings('td')

for s in sis:
    print s

我不知道怎么直接捡起来让兄弟姐妹走人。然而,当我运行它时,它给出了如下错误消息,似乎它无法识别兄弟姐妹。

代码语言:javascript
复制
Traceback (most recent call last):
File "C:/Python27/Last Activity mydyingbride.py", line 17, in <module>
sis = cities.find_next_siblings('td')
AttributeError: 'ResultSet' object has no attribute 'find_next_siblings'

以何种方式,我可以通过使用本地文件来进行练习?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-05 09:20:17

我建议您使用Python调试器查看变量的当前值。无论如何,这是一个解决办法:

代码语言:javascript
复制
soup = BeautifulSoup(page.read())
cities = soup.find_all('td', {'class' : 'details'}) 
counter = 0
while len(cities) > counter:
    sis = cities[counter].find_next_siblings('td')

    for s in sis:
        print s

    counter += 1

产出如下:

代码语言:javascript
复制
<td>May 09, 1997</td>
<td>Jan 23, 2009 12:05 pm </td>

回答你的下一个问题。请参阅以下示例:

代码语言:javascript
复制
from bs4 import BeautifulSoup
html_doc = '''
<tr class="ghj">
    <td><span class="city-sh"><sh src="./citys/1.jpg" alt="boy" title="boy" /></span><a href="./membercity.php?mode=view&amp;u=12563">port_new_cape</a></td>
    <td class="position"><a href="./search.php?id=12563&amp;sr=positions" title="Search positions">452</a></td>
    <td class="details"><div>South</div></td>
    <td>May 09, 1997</td>
    <td>Jan 23, 2009 12:05 pm&nbsp;</td>
</tr>
<tr class="ghj">
    <td><span class="city-sh"><sh src="./citys/1.jpg" alt="boy" title="boy" /></span><a href="./membercity.php?mode=view&amp;u=12563">port_new_cape</a></td>
    <td class="position"><a href="./search.php?id=12563&amp;sr=positions" title="Search positions">452</a></td>
    <td class="details"><div>South</div></td>
    <td>May 09, 1997</td>
    <td>Jan 24, 2009 12:05 pm&nbsp;</td>
</tr>
<tr class="ghj">
    <td><span class="city-sh"><sh src="./citys/1.jpg" alt="boy" title="boy" /></span><a href="./membercity.php?mode=view&amp;u=12563">port_new_cape</a></td>
    <td class="position"><a href="./search.php?id=12563&amp;sr=positions" title="Search positions">452</a></td>
    <td class="details"><div>South</div></td>
    <td>May 09, 1997</td>
    <td>Jan 25, 2009 12:05 pm&nbsp;</td>
</tr>
'''
soup = BeautifulSoup(html_doc)
cities = soup.find_all('td', {'class' : 'details'}) 
counter = 0
while len(cities) > counter:
    datesColumn = cities[counter].find_next_siblings('td')
            # Assuming you are interested in second column of date
    if len(datesColumn) == 2:
        print datesColumn[1].string

    counter += 1

产出如下:

代码语言:javascript
复制
Jan 23, 2009 12:05 pm 
Jan 24, 2009 12:05 pm 
Jan 25, 2009 12:05 pm 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21572812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档