鱼C论坛

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

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

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

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

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

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

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

def open_url(url):
    '''
打开url
    '''
    req = urllib.request.Request(url)
    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')
    
    '''检测连接失败错误'''
    count = 0
    while 1:
        if count == 10:            
            temp =input('此连接(%s)已经失败10次,按任意键继续',url)
        try:
            response = urllib.request.urlopen(req)
        except urllib.error.HTTPError as e:
            print("服务器没有响应")
            print("Error code:",e.code)
            count += 1
            continue
        except urllib.error.URLError as e:
            print("链接服务器失败")
            print("Reason:",e.reason)
            count += 1
            continue
        else:
            html = response.read().decode('utf-8')
            break
    '''检测连接失败错误'''
    
    #print(html)
    return(html)
    #pass

def find_song(url):
    '''
在此界面找到所有音乐
    '''
    html = open_url(url)
    print(html)
    p = re.compile(r'(<a href="/song?id=\d?)"><b title="(.?)">')
    song_url_list = p.findall(html)
    print(song_url_list)#------------------------------------------------------------这里面一直是空的
    return(song_url_list)
    #pass
    
def find_review(url):
    '''
在此界面找到所有精彩评论
    '''
    pass

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

if __name__ == '__main__':
    url = 'https://music.163.com/#/discover/toplist'
    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
学到了,这就去和网易云对线

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

使用道具 举报

 楼主| 发表于 2020-4-1 14:26:49 | 显示全部楼层
有没有大大前来救场
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2020-4-1 15:39:33 | 显示全部楼层
网易云会用一种奇奇怪怪的方式来加密歌名
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

学到了,这就去和网易云对线
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

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

貌似不管用呢 还是爬不到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 19:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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