【问题标题】:how to reach dipper divs inside <span> tag using python crawler?如何使用 python 爬虫到达 <span> 标签内的 dipper div?
【发布时间】:2016-04-26 09:48:33
【问题描述】:

body 标签有一个&lt;span&gt; 标签。 span 标签内还有很多其他的 div。我想去北斗但是当我尝试这段代码时:

from bs4 import BeautifulSoup
from urllib.request import urlopen

url = 'https://www.instagram.com/artfido/'
data = urlopen(url)
soup = BeautifulSoup(data, 'html.parser')
result = soup.body.span
print (result)

结果就是这样:

<span id="react-root"></span>

如何访问 span 标签内的 div?

我们可以解析&lt;span&gt; 标签吗?是否可以?如果是,那为什么我无法解析跨度?

通过使用这个:

    result = soup.body.span.contents

输出是:

[]

【问题讨论】:

  • 您需要将网址提供给我们,以便我们试用您的代码
  • 无法测试,我有一个限制性代理...但你应该这样做soup = BeautifulSoup( data.read(), 'html.parser')
  • 得到一个结果很奇怪,或者函数可能与python2不同
  • 为什么?!无需使用data.read()。对吧?!
  • 在 python 2 中至少是的,因为数据只是一个对象。来自文档:If all went well, a file-like object is returned

标签: python html web-crawler


【解决方案1】:

正如 cmets 中所说, urlopen(url) 返回一个类似对象的文件,这意味着如果您想获取其中的内容,则需要从中读取。

from bs4 import BeautifulSoup
from urllib.request import urlopen

url = 'https://www.instagram.com/artfido/'
data = urlopen(url)
soup = BeautifulSoup(data.read(), 'html.parser')
result = soup.body.span
print (result)

我用于我的 python 2.7 设置的代码:

from bs4 import BeautifulSoup
import urllib2

url = 'https://www.instagram.com/artfido/'
data = urllib2.urlopen(url)
soup = BeautifulSoup(data.read(), 'lxml')
result = soup.body.span
print result

编辑
为了将来参考,如果您想要更简单的处理 url,有一个名为 requests 的包。在这种情况下,它是相似的,但我发现它更容易理解。

from bs4 import BeautifulSoup
import requests

url = 'https://www.instagram.com/artfido/'
r = requests.get(url)
data = r.text
soup = BeautifulSoup(data, 'lxml')
result = soup.body.span
print result

【讨论】:

  • 通过测试第一个和第三个,输出与我遇到的相同。由于我的 python 版本,无法测试第二个代码。
  • 我已经稍微更新了我的问题,请看。 &lt;span&gt;标签有问题吗?!因为这个标签是我唯一无法解析的标签。
  • @niloofar 好的,我们有一点误解。我将使用一些代码进行编辑,使其只有 span 标签
  • 无法解析是什么意思?
  • @niloofar 你打印汤的时候得到页面吗?
猜你喜欢
  • 2019-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多