使用BeautifulSoup解析Facebook页面

时间:2014-12-12 02:05:19

标签: parsing python-2.7 beautifulsoup

我正在facebook的html页面中搜索一个名字。 如果我像这样采用文件html.txt:

html = open('html.txt','r').read()
soup = BeautifulSoup(html)

如果我搜索这个名字似乎没问题,但是如果我尝试用BS搜索我就找不到任何东西..

>>>html.find("Joseph Tan")
98939
>>>html[98700:99000]
'<div class="fwn fcg"><span class="fcg"><span class="fwb"><a class="profileLink" href="https://www.facebook.com/ASD.391" data-ft="&#123;&quot;tn&quot;:&quot;l&quot;&#125;" data-hovercard="/ajax/hovercard/user.php?id=123456">Alex Tan</a></span> condivided the photo <a class="profileLink" '
>>> soup.findAll('div',{'class':'fwn fcg'})
[]
>>> soup.findAll('span',{'class':'fwb'})
[]
>>> soup.findAll('a',{'class':'profileLink'})
[]
>>> 
有人可以帮帮我吗?非常感谢

编辑:重新创建的HTML页面

html page

1 个答案:

答案 0 :(得分:0)

它的工作原理如下:

print soup.find_all('div', class_=['fwn','fcg'])

OUTPUT:

[<div class="uiHeaderActions rfloat _ohf fsm fwn fcg"><a class="_1c1m" href="#" role="button">Segna tutti come già letti</a> · <a accesskey="m" ajaxify="/ajax/messaging/composer.php" href="/messages/new/" id="u_0_8" rel="dialog" role="button">Invia un nuovo messaggio</a></div>, <div class="uiHeaderActions fsm fwn fcg"><a href="#" id="u_0_9" role="button">Segna come già letto</a> · <a href="/settings?tab=notifications&amp;section=on_facebook" target="_blank">Impostazioni</a></div>, <div class="fsm fwn fcg"><a ajaxify="/settings/language/language/?uri=https%3A%2F%2Fwww.facebook.com%2Fshares%2Fview%3Fid%3D10152555113196961&amp;source=TOP_LOCALES_DIALOG" href="#" rel="dialog" role="button" title="Usa Facebook in un'altra lingua.">Italiano</a></div>]

根据==>this链接,这是使用BS搜索类和其他HTML元素的方式。请检查。

有两个问题。

1。您编写的方式与我提供的上述链接不匹配。可能是您没有使用BS的更新版本。

2。有两个课程&#39; fwn&#39;并且&#39; fcg&#39;。所以你必须在列表中给出他们的名字,这就是我得到输出的方式。

同样适用于&#39; span&#39;和&#39; a&#39;如下:

print soup.find_all('span', class_='jewelCount')
print soup.find_all('a', class_='_awj')

找不到您的'span'课程'fwb''a'课程'profileLink',因为它们不在HTML中。

您可以通过打印所有跨度来检查。 写 print soup.find_all('a') print soup.find_all('span') * 进行检查靠你自己。

希望这会有所帮助,如果没有,再写一次! :)