Python BeautifulSoup不抓取动态内容
我的问题是我想从这个页面获取相关链接: 如果我检查Chrome或Safari中的元素,我可以看到Python BeautifulSoup不抓取动态内容,python,html,dynamic,beautifulsoup,Python,Html,Dynamic,Beautifulsoup,我的问题是我想从这个页面获取相关链接: 如果我检查Chrome或Safari中的元素,我可以看到和列出的所有文章。如果我试图用BeautifulSoup抓取它,它将抓取页面和除相关文章之外的所有内容 以下是我目前掌握的情况: import urllib2 from bs4 import BeautifulSoup url = "http://support.apple.com/kb/TS1538" response = urllib2.urlopen(url) soup = BeautifulS
和列出的所有文章。如果我试图用BeautifulSoup抓取它,它将抓取页面和除相关文章之外的所有内容
以下是我目前掌握的情况:
import urllib2
from bs4 import BeautifulSoup
url = "http://support.apple.com/kb/TS1538"
response = urllib2.urlopen(url)
soup = BeautifulSoup(response.read())
print soup
本节使用Javascript加载。禁用浏览器的Javascript以查看
BeautifulSoup
如何“查看”页面
在这里,您有两个选择:
- 使用无头浏览器,它将执行Javascript。请参见以下关于此的问题:
- 试着弄清楚苹果网站是如何加载内容并进行模拟的——它可能会对某个地址进行AJAX调用李>
经过一些挖掘之后,它似乎向这个地址()发出了一个请求,并使用JSONP加载结果,其中
KmLoader.receiveSuccess
是接收函数的名称。使用Chrome开发工具的Firebug更详细地检查页面。此部分使用Javascript加载。禁用浏览器的Javascript以查看BeautifulSoup
如何“查看”页面
在这里,您有两个选择:
- 使用无头浏览器,它将执行Javascript。请参见以下关于此的问题:
- 试着弄清楚苹果网站是如何加载内容并进行模拟的——它可能会对某个地址进行AJAX调用李>
经过一些挖掘之后,它似乎向这个地址()发出了一个请求,并使用JSONP加载结果,其中
KmLoader.receiveSuccess
是接收函数的名称。使用Chrome开发工具的Firebug更详细地检查页面。我遇到了类似的问题,动态创建的html内容可能无法被BeautifulSoup捕获。一个非常基本的解决方案是让它在捕获内容之前等待几秒钟,或者使用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
我遇到了类似的问题,动态创建的html内容可能不会被BeautifulSoup捕获。一个非常基本的解决方案是让它在捕获内容之前等待几秒钟,或者使用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
BeautifulSoup只是一个解析器。我认为您的问题更可能出现在
urlopen
上。在尝试解析之前,您是否检查过是否包含了适当的元素?BeautifulSoup只是一个解析器。我认为您的问题更可能出现在urlopen
上。在尝试解析之前,您是否检查过是否包含了适当的元素?