Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python BeautifulSoup不抓取动态内容_Python_Html_Dynamic_Beautifulsoup - Fatal编程技术网

Python BeautifulSoup不抓取动态内容

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

我的问题是我想从这个页面获取相关链接:

如果我检查Chrome或Safari中的元素,我可以看到
和列出的所有文章。如果我试图用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
上。在尝试解析之前,您是否检查过是否包含了适当的元素?