music-163 icon indicating copy to clipboard operation
music-163 copied to clipboard

About artists.py

Open Zhang21 opened this issue 7 years ago • 5 comments

有一个问题,亲!在artists.py中: params = {'id':group_id, 'initial':initial},这两个参数是做什么的? 还有你的headers定义了为什么没有在requests当中使用? 我的body有问题,导致后面的hot_artists和artist都是空值。 我换了好几个requests(url)中的URL,结果返回的soup还是有问题。应该还是上面两个params我没理解到是什么意思而导致后面错误。

这个连接本地或者远程MySQL是要提前把sql.py中的表先建好吗?

Zhang21 avatar Jun 20 '17 07:06 Zhang21

  1. 你可以查看一下这个链接:http://music.163.com/#/discover/artist/cat?id=2002&initial=68 ,id和initial参数对应了歌手的分类,使用这两个参数可以遍历出所有的歌手;因为id是Python的内置关键字,所以我选择使用group_id作为变量名;
  2. header没使用应该是我定义了之后发现不使用header也可以正常请求,所以就没有使用;
  3. 没看懂什么意思;
  4. 理解了这两个参数再看看呢?
  5. 需要先建好数据库的,数据库的表格式看插入语句可以很容易的参测出来;

RitterHou avatar Jun 20 '17 16:06 RitterHou

理解了你的意思,但数据库里面什么也没有。 我单独输出hot_artists和artist也都是空值。 我看了一下body的输出好像也没有hot_artists和artist这两者的html tag在里面,find_all应该是无效了。

Zhang21 avatar Jun 26 '17 04:06 Zhang21

爬去的soup里面的内容呢直接浏览的内容不一样,如http://music.163.com/#/discover/artist/cat?id=2002&initial=68 。直接在这个页面上面如 “周杰伦”右键检查可以看到tag属性,“<a href=" /artist?id=6452" class="nm nm-icn f-thide s-fc0" title="周杰伦的音乐">周杰伦</a>“,周杰伦,但是爬去下来的soup找不到"class":"nm nm-icn f-thide s-fc0",也就是说没有这些歌手的数据。

是不是被网易禁止了? 感谢了! 看了一下,还像是param加密了,知乎上面看到的encrypted。

Zhang21 avatar Jun 27 '17 02:06 Zhang21

@Zhang21 是不是frame的问题,右键检查”周杰伦“属性会发现,他在源码html的iframe层里面,需要用selenium的 driver.switch_to.frame(driver.find_element_by_xpath("//iframe"))才行,之后再用bs解析就行了

Eajack avatar Aug 26 '17 05:08 Eajack

这个xpath定位不到是因为有大量的js渲染吗?bs可以获取能理解为bs可以解析渲染/动态网页吗?

yuanguangyu avatar Aug 15 '19 09:08 yuanguangyu