鱼C论坛

 找回密码
 立即注册
查看: 3075|回复: 6

[已解决]python爬虫爬到的网页源码和按F12查看的网页源码不一致问题

[复制链接]
发表于 2020-4-1 14:02:50 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 丶霁灵 于 2020-4-1 16:40 编辑

刚学完小甲鱼的爬虫课,尝试爬取一网站的图片成功了,然后就想试试爬取网易云音乐的评论
这是还没有完成的代码
  1. import urllib.request
  2. import os
  3. import re

  4. def open_url(url):
  5.     '''
  6. 打开url
  7.     '''
  8.     req = urllib.request.Request(url)
  9.     req.add_header('user-agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36')
  10.    
  11.     '''检测连接失败错误'''
  12.     count = 0
  13.     while 1:
  14.         if count == 10:            
  15.             temp =input('此连接(%s)已经失败10次,按任意键继续',url)
  16.         try:
  17.             response = urllib.request.urlopen(req)
  18.         except urllib.error.HTTPError as e:
  19.             print("服务器没有响应")
  20.             print("Error code:",e.code)
  21.             count += 1
  22.             continue
  23.         except urllib.error.URLError as e:
  24.             print("链接服务器失败")
  25.             print("Reason:",e.reason)
  26.             count += 1
  27.             continue
  28.         else:
  29.             html = response.read().decode('utf-8')
  30.             break
  31.     '''检测连接失败错误'''
  32.    
  33.     #print(html)
  34.     return(html)
  35.     #pass

  36. def find_song(url):
  37.     '''
  38. 在此界面找到所有音乐
  39.     '''
  40.     html = open_url(url)
  41.     print(html)
  42.     p = re.compile(r'(<a href="/song?id=\d?)"><b title="(.?)">')
  43.     song_url_list = p.findall(html)
  44.     print(song_url_list)#------------------------------------------------------------这里面一直是空的
  45.     return(song_url_list)
  46.     #pass
  47.    
  48. def find_review(url):
  49.     '''
  50. 在此界面找到所有精彩评论
  51.     '''
  52.     pass

  53. def download(url):
  54.     '''
  55. 网易云前100音乐精彩评论爬虫
  56.     '''
  57.     os.chdir(os.curdir)
  58.    
  59.     song_url_list = find_song(url)
  60.     for i in song_url_list:
  61.         review_list = find_review(i[0])
  62.         with open(i[1]+".txt",'w+',encoding='utf-8') as f:
  63.             for j in review_list:
  64.                 f.write(j[0]+':'+j[1])
  65.                 f.write('\n')
  66.     temp = input('爬取完成,按任意键继续')

  67. if __name__ == '__main__':
  68.     url = 'https://music.163.com/#/discover/toplist'
  69.     download(url)
复制代码


我的想法是先找到排行榜上的歌曲,然后进去爬评论。
然后我发现爬的歌曲列表一直是空的,html解析正常,但是就是搜不到。我单独保存了html去用ctrl+f原来也搜不到。
对照了一下我发现我爬到的html和我在浏览器按F12看到的并不一样,少东西

请问这种情况该怎么办呢?
1.png 22.png
百度了说一种是直接从JavaScript中采集加载的数据,用json模块处理;

                  另一种方式是直接采集浏览器中已经加载好的数据,借助工具--PhantomJS

请问有没有学了现行课程能简单掌握的方法?
最佳答案
2020-4-1 16:32:42
丶霁灵 发表于 2020-4-1 16:25
学到了,这就去和网易云对线

这个不能解决所有问题,如果只是要爬一些确定的对象的话还好,但是涉及搜索等功能就不好用了,如果要深入学习爬虫的话最好多去看一下大神们爬网易云的代码。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-1 14:26:49 | 显示全部楼层
有没有大大前来救场
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-1 15:27:35 | 显示全部楼层
网易云有个反爬机制,多数情况下可以通过去掉井号来解决问题,有个别情况则需要一些别的模块帮助,我试了一下把url改成了https://music.163.com/discover/toplist(就是去掉了井号)然后HTML复制到TXT没有问题,应该不是麻烦的情况,接下来进入到歌曲里面爬取评论看看是不是也需要去掉井号吧。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-1 15:39:33 | 显示全部楼层
网易云会用一种奇奇怪怪的方式来加密歌名
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-1 16:25:06 | 显示全部楼层
Hoiste 发表于 2020-4-1 15:27
网易云有个反爬机制,多数情况下可以通过去掉井号来解决问题,有个别情况则需要一些别的模块帮助,我试了一 ...

学到了,这就去和网易云对线
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-1 16:32:42 | 显示全部楼层    本楼为最佳答案   
丶霁灵 发表于 2020-4-1 16:25
学到了,这就去和网易云对线

这个不能解决所有问题,如果只是要爬一些确定的对象的话还好,但是涉及搜索等功能就不好用了,如果要深入学习爬虫的话最好多去看一下大神们爬网易云的代码。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-1 16:34:44 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-1 15:39
网易云会用一种奇奇怪怪的方式来加密歌名

貌似不管用呢 还是爬不到
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-19 11:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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