鱼C论坛

 找回密码
 立即注册
查看: 1535|回复: 4

爬虫爬不动?

[复制链接]
发表于 2017-11-27 00:37:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我在练习使用爬虫获取网易云(http://music.163.com/#/discover/toplist)上的歌单时,发现网站存储歌名的地方是这样写的(如图):歌名被分开保存在两个位置了,这是不是说明没办法爬取了?有什么骚操作解决掉它吗大神们??
InkedQQ截图20171127003348_LI.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-27 09:19:16 | 显示全部楼层
直接取b的title就行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-27 17:50:34 | 显示全部楼层
ooxx7788 发表于 2017-11-27 09:19
直接取b的title就行了

我没学过html 我试了下爬取的时候写这样一个小程序,不嫌弃的话大神帮我看看?
   import requests

import bs4

res = requests.get("http://music.163.com/#/discover/toplist?id=3778678")

soup = bs4.BeautifulSoup(res.text,"html.parser")
targets = soup.find_all("span",class_="txt")
for each in targets :
    print(each.a.b.title.text)
最后报错是:
Traceback (most recent call last):

  File "<ipython-input-16-2c9ed98849ed>", line 9, in <module>
    print(each.a.b.title.text)

AttributeError: 'NoneType' object has no attribute 'text'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-27 17:54:37 | 显示全部楼层
本帖最后由 ooxx7788 于 2017-11-27 17:56 编辑

人家b标签里面返回的内容是通过js刷新出来的。并不是直接在网页里面的。
你查看targets内容就可以看出,里面是没有实际内容的。所以,你这个爬虫是不成立的。

targets里面标签的内容实际上是这个
  1. <a href="/song?id=${x.id}"><b title="${x.name|escape}{if alia} - (${alia|escape}){/if}">${soil(x.name)}</b></a>
  2. <a href="/song?id=${x.id}"><b title="${x.name|escape}{if alia} - (${alia|escape}){/if}">${soil(x.name)}</b></a>
  3. <a href="/song?id=${x.id}"><b title="${x.name|escape}{if alia} - (${alia|escape}){/if}">${soil(x.name)}</b></a>
  4. <a href="/song?id=${x.id}"><b title="${x.name|escape}{if alia} - (${alia|escape}){/if}">${soil(x.name)}</b></a>
  5. <a href="/song?id=${x.id}"><b title="${x.name|escape}{if alia} - (${alia|escape}){/if}">${soil(x.name)}</b></a>
  6. <a href="/song?id=${x.id}"><b title="${x.name|escape}{if alia} - (${alia|escape}){/if}">${soil(x.name)}</b></a>
  7. <a href="/song?id=${x.id}"><b title="${x.name}">${x.name}</b></a>
  8. <a href="/song?id=${x.id}"><b title="${x.name|escape}{if alia} - (${alia|escape}){/if}">${soil(x.name)}</b></a>
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-27 22:11:49 | 显示全部楼层
ooxx7788 发表于 2017-11-27 17:54
人家b标签里面返回的内容是通过js刷新出来的。并不是直接在网页里面的。
你查看targets内容就可以看出,里 ...

求一个解决思路
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-3 09:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表