鱼C论坛

 找回密码
 立即注册
查看: 1997|回复: 10

[已解决]简单爬虫问题

[复制链接]
发表于 2021-2-23 18:48:12 | 显示全部楼层 |阅读模式

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

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

x
我进入到一个网站页面,在抓包工具我发现请求这个url的数据包的response有我需要的源代码,可是我通过请求这个url,打印出的响应数据发现,它没有网页上显示的数据,这是什么情况,葵丘求大佬解答!!!
最佳答案
2021-2-23 20:10:31
本帖最后由 YunGuo 于 2021-2-23 20:13 编辑

网站注册看了,cookie反爬。
分析很简单,首先,请求网页后浏览器源代码中有数据,但是网站是要登录才能进去的(浏览器没登录前打不开这个网站),根据这个推测要携带cookie请求,才能正常得到数据。所以你携带cookie就行了,然后正常提取数据去求和。
import requests
from lxml import etree
url = 'http://glidedsky.com/level/web/crawler-basic-1'
headers = {
    'user-agent': 'Mozilla/5.0',
    'cookie': ''   #  复制浏览器cookie
}
res = requests.get(url, headers=headers)
sel = etree.HTML(res.text)
nums = sel.xpath('//*[@class="col-md-1"]/text()')
num_sum = 0
for num in nums:
    num_sum += int(num.replace('\n', '').strip())
print(num_sum)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-2-23 18:52:41 | 显示全部楼层
ajax
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-2-23 18:55:58 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-23 18:58:58 | 显示全部楼层

我捕获的阿贾克斯数据包也没得我要的数据呀,大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-23 19:17:00 From FishC Mobile | 显示全部楼层
caly_fast 发表于 2021-2-23 18:58
我捕获的阿贾克斯数据包也没得我要的数据呀,大佬

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

使用道具 举报

 楼主| 发表于 2021-2-23 19:25:08 | 显示全部楼层

http://glidedsky.com/level/web/crawler-basic-1,这个网址要注册一下就可以访问了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-23 19:25:52 | 显示全部楼层

已经发网站了,正在审核
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-23 20:10:31 | 显示全部楼层    本楼为最佳答案   
本帖最后由 YunGuo 于 2021-2-23 20:13 编辑

网站注册看了,cookie反爬。
分析很简单,首先,请求网页后浏览器源代码中有数据,但是网站是要登录才能进去的(浏览器没登录前打不开这个网站),根据这个推测要携带cookie请求,才能正常得到数据。所以你携带cookie就行了,然后正常提取数据去求和。
import requests
from lxml import etree
url = 'http://glidedsky.com/level/web/crawler-basic-1'
headers = {
    'user-agent': 'Mozilla/5.0',
    'cookie': ''   #  复制浏览器cookie
}
res = requests.get(url, headers=headers)
sel = etree.HTML(res.text)
nums = sel.xpath('//*[@class="col-md-1"]/text()')
num_sum = 0
for num in nums:
    num_sum += int(num.replace('\n', '').strip())
print(num_sum)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-23 20:27:36 | 显示全部楼层
YunGuo 发表于 2021-2-23 20:10
网站注册看了,cookie反爬。
分析很简单,首先,请求网页后浏览器源代码中有数据,但是网站是要登录才能进 ...

问题解决了谢谢大佬,为啥不能把cookie放到params参数里呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-23 22:31:44 | 显示全部楼层
caly_fast 发表于 2021-2-23 20:27
问题解决了谢谢大佬,为啥不能把cookie放到params参数里呢?

params是网站服务器需要传递的查询参数,而cookie不属于查询参数。
另外这里为了方便,我把cookie放到headers里面,cookie也可以在get请求时添加cookies参数,但是这个必须要是键值对形式(字典),拿到浏览器cookie还要处理成字典,不是很方便。
get请求添加cookie:
cookies = {
    '键': '值',
}
res = requests.get(url, headers=headers, cookies=cookies)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-23 22:56:27 | 显示全部楼层
YunGuo 发表于 2021-2-23 22:31
params是网站服务器需要传递的查询参数,而cookie不属于查询参数。
另外这里为了方便,我把cookie放到he ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 12:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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