BeautifulSoup没有抓住动态内容

时间:2013-04-07 18:54:13

标签: python html dynamic beautifulsoup

我遇到的问题是我想从此页面抓取相关链接:http://support.apple.com/kb/TS1538

如果我在Chrome或Safari中检查元素,我可以看到<div id="outer_related_articles">和列出的所有文章。如果我尝试使用BeautifulSoup抓取它,它将获取页面和相关文章之外的所有内容。

这是我到目前为止所拥有的:

import urllib2
from bs4 import BeautifulSoup
url = "http://support.apple.com/kb/TS1538"
response = urllib2.urlopen(url)
soup = BeautifulSoup(response.read())
print soup

2 个答案:

答案 0 :(得分:2)

此部分使用Javascript加载。停用浏览器的Javascript以查看BeautifulSoup“看到”页面的方式。

从这里你有两个选择:


经过一番挖掘后,似乎它对此地址(http://km.support.apple.com/kb/index?page=kmdata&requestid=2&query=iOS%3A%20Device%20not%20recognized%20in%20iTunes%20for%20Windows&locale=en_US&src=support_site.related_articles.TS1538&excludeids=TS1538&callback=KmLoader.receiveSuccess)发出了请求,并使用JSONP加载结果,其中KmLoader.receiveSuccess是接收函数的名称。使用Firebug of Chrome开发工具更详细地检查页面。

答案 1 :(得分:0)

我遇到了类似的问题,BeautifulSoup可能无法捕获动态创建的html内容。一个非常基本的解决方案是让它在捕获内容之前等待几秒钟,或者使用具有等待元素然后继续的功能的Selenium。所以对于前者,这对我有用:

import time

# .... your initial bs4 code here

time.sleep(5) #5 seconds, it worked with 1 second too
html_source = browser.page_source

# .... do whatever you want to do with bs4
相关问题