使用Python BeautifulSoup/lxml删除所有链接

2024-06-26 01:36:40 发布

您现在位置:Python中文网/ 问答频道 /正文

http://www.snapdeal.com/

我试图从这个网站上删除所有链接,但当我这么做时,我得到了一个意想不到的结果。我发现这是因为javascript

在“查看所有类别”选项卡下,您将找到所有主要产品类别。如果将鼠标悬停在任何类别上,它将展开这些类别。我想从每个主要类别的链接

url = 'http://www.snapdeal.com/'
data = urllib2.urlopen(url)
page = BeautifulSoup(data)
#print data
for link in page.findAll('a'):
       l = link.get('href')
       print l

但是,这给了我一个不同于我预期的结果(我关闭了javascript并查看了页面源代码,输出来自此源代码)

我只想找到每个主要类别的所有子链接。如有任何建议,将不胜感激


Tags: comhttpurldata源代码网站链接www
3条回答

Categories Menu是您正在查找的url。许多网站使用XHR(XMLHTTPRequest)动态生成内容。 为了检查网站的组件,请熟悉Firefox中的Firebug插件或Chrome中的开发者工具(内置插件)。您可以在上述附加组件的“网络”选项卡下查看网站中使用的XHR

之所以会发生这种情况,是因为您让BeautifulSoup选择了自己最好的解析器,而您可能没有安装lxml

最好的选择是使用html.parser解析url

from bs4 import BeautifulSoup
import urllib2
url = 'http://www.snapdeal.com/'
data = urllib2.urlopen(url).read()

page = BeautifulSoup(data,'html.parser')

for link in page.findAll('a'):
       l = link.get('href')
       print l  

这对我有效。请确保安装依赖项

我认为您应该尝试另一个库,比如selenium,它为您提供了一个web驱动程序,这就是这个库的优点,就我个人而言,我无法使用bs4处理Java脚本

相关问题 更多 >