BeautifulSoup找不到标签

时间:2013-09-22 09:55:52

标签: python beautifulsoup

我试图从网站上抓取数据,但是find()方法无法找到tag.Below是我的代码:

import urllib2 
from bs4 import BeautifulSoup

url='http://www.jbhifi.com.au/computers/laptop-notebook/'
req=urllib2.Request(url,headers={'User-Agent':'Mozilla/5.0 (Windows NT 5.1)          AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.76 Safari/537.36'})
webpage=urllib2.urlopen(req)
content=webpage.read()
soup=BeautifulSoup(content)
x=soup.find("div",attrs={'id':'content-two'})
print x  #return None

然后,我发现了只有HTML的美丽解析器头

head=soup.find('head')
print head # print out content within <head>tag
body=soup.find('body')
print body # Print None

我真的很困惑。我以前几次使用过beautifulsoup。这是我第一次遇到这个问题。任何人都知道如何解决这个问题?谢谢。

问题已经解决。我卸载了beautifulsoup 4.2,然后安装了beautifulsoup 4.3。代码现在有效。

2 个答案:

答案 0 :(得分:2)

代码运行良好。你假设'x'会返回None是错误的。

(Pdb) print x is None
False
(Pdb) print str(x)[:100]
<div id="content-two" style="float:right;width:828px;">
<div style="padding-bottom:7px;"><a href="ht

答案 1 :(得分:0)

你可以查一下。

确保您要解析的代码位于页面

view-source:chrome-extension://http://www.jbhifi.com.au/computers/laptop-notebook/

如果不存在,则通过javascript创建html代码。

这种情况。使用selenium或找到使用javascript生成html代码的部分。

有两种方法可以在JavaScript中生成HTML代码。

fisrt方式,使用javascript =&gt;生成html代码建议 selenium + bs4 + 请求

第二种方式,在服务器上接收数据后用javascript生成html代码=&gt;建议 bs4 + 请求