鱼C论坛

 找回密码
 立即注册
查看: 4269|回复: 9

[已解决]关于爬虫用f12查看网页源码和爬虫爬取出来的源码不一样的问题

[复制链接]
发表于 2020-10-24 18:41:10 | 显示全部楼层 |阅读模式

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

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

x

这个是我再网页查看的源码

这个是我再网页查看的源码

这个是我用爬虫爬下来的源码

这个是我用爬虫爬下来的源码

我开始用的爬虫用的标签是网页源码显示的标签soup.find_all('div',class_="concent ke-cost")这个标签结果找不到任何数据
然后我直接把整个网页爬取下来找到的标签是soup.find_all('div',class_="mui-wpimagetext-item unloaded")。为啥我再网页查看的源码和python读取的源码是完全不同的。那么我平常去爬取网页的时候要怎么来提取标签呢。谢谢大佬解惑
最佳答案
2020-10-24 19:39:35
本帖最后由 suchocolate 于 2020-10-24 19:41 编辑

1.详情图片分支绑定了事件,所以一次get拿不到。
1.png
2.图片的链接在另外的一次get中得到的js中,不过这个get请求的参数不知道是如何构建的,省事建议还是用selenium吧。

3.png
# 有的参数能从第一个html中得到,有的我也没查到。

4.png

3.你可以直接用requests拿到这个js:
import requests

url = 'https://aldcdn.tmall.com/recommend.htm?itemId=556772183225&categoryId=50008612&sellerId=3249953402&shopId=255372786&brandId=3229901&refer=&brandSiteId=0&rn=&appId=03054&isVitual3C=false&isMiao=false&count=12&callback=jsonpAld03054'
headers = {'user-agent': 'firefox'}
r = requests.get(url, headers=headers)
print(r.text)



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

使用道具 举报

发表于 2020-10-24 18:50:11 | 显示全部楼层
审查看到的元素是经过浏览器加载的,有的分支是event触发才加载的,单单发request可能无法加载,你要找到真正拿到数据的那条request,直接去拿数据,不一定要看html。
另外把你的代码发上来,不要图片。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-10-24 18:58:47 | 显示全部楼层
suchocolate 发表于 2020-10-24 18:50
审查看到的元素是经过浏览器加载的,有的分支是event触发才加载的,单单发request可能无法加载,你要找到真 ...
import requests
from bs4 import BeautifulSoup
import re

findImg = re.compile(r'data-ks-lazyload="(.*?)"')

def askurl():
    head = {
        'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Mobile Safari/537.36'
}
    url = 'https://detail.tmall.com/item.htm?id=556772183225&ali_refid=a3_430583_1006:1151055037:N:DY8nPNoQXxCaUzcW5xAY4EwR15x8pB0i:ad0101273a205b498baa557cde64cb9b&ali_trackid=1_ad0101273a205b498baa557cde64cb9b&spm=a230r.1.14.1'
    request = requests.get(url=url,headers=head)
    html = request.text

    return html

def getData():
    html = askurl()
    soup = BeautifulSoup(html,'html.parser')
    i = 1
    for item in soup.find_all('div',class_="mui-wpimagetext-item unloaded"):
        item = str(item)
        img = re.findall(findImg,item)[0]
        print(img)
getData()



大佬这是我的代码,我没有太看懂您的意思。我想找的是详情图片的链接,
你要找到真正拿到数据的那条request,直接去拿数据,不一定要看html
这个要咋看呢,我无法通过审查元素找到我需要的标签,那么我的BeautifulSoup要怎么写呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-24 19:26:29 | 显示全部楼层
不要看element,以network的respone为准。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-24 19:32:12 | 显示全部楼层
我之前也和你一样,有些是异步加载的,你就需要去搜你的那个字段,去找到真正的html再去发请求,这个有的时候却是很麻烦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-24 19:39:35 | 显示全部楼层    本楼为最佳答案   
本帖最后由 suchocolate 于 2020-10-24 19:41 编辑

1.详情图片分支绑定了事件,所以一次get拿不到。
1.png
2.图片的链接在另外的一次get中得到的js中,不过这个get请求的参数不知道是如何构建的,省事建议还是用selenium吧。

3.png
# 有的参数能从第一个html中得到,有的我也没查到。

4.png

3.你可以直接用requests拿到这个js:
import requests

url = 'https://aldcdn.tmall.com/recommend.htm?itemId=556772183225&categoryId=50008612&sellerId=3249953402&shopId=255372786&brandId=3229901&refer=&brandSiteId=0&rn=&appId=03054&isVitual3C=false&isMiao=false&count=12&callback=jsonpAld03054'
headers = {'user-agent': 'firefox'}
r = requests.get(url, headers=headers)
print(r.text)



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

使用道具 举报

 楼主| 发表于 2020-10-25 20:50:02 | 显示全部楼层
2269099035 发表于 2020-10-24 19:26
不要看element,以network的respone为准。

请问下在network里面我要怎么才能确定我需要的东西在哪个链接里面呢。感觉有超级多的链接
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-25 20:57:30 | 显示全部楼层
suchocolate 发表于 2020-10-24 19:39
1.详情图片分支绑定了事件,所以一次get拿不到。

2.图片的链接在另外的一次get中得到的js中,不过这个ge ...

我的审查元素怎没有看到有事件的标志呢 ()LKRWA`TPYCXMBH7)7OHFC.png


还有那个您在network去找的链接,在那么多的东西里面您是怎么知道自己需要的是哪个链接呢 8CMU_99$}A7$)5@YU][HGNH.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-25 21:43:35 | 显示全部楼层
18508410033 发表于 2020-10-25 20:57
我的审查元素怎没有看到有事件的标志呢

我的是比较新的firefox,google好像没有event的提示。
主要找html,xhr,最后是js。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-25 22:30:46 | 显示全部楼层
suchocolate 发表于 2020-10-25 21:43
我的是比较新的firefox,google好像没有event的提示。
主要找html,xhr,最后是js。

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-18 04:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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