caly_fast 发表于 2021-2-23 18:48:12

简单爬虫问题

我进入到一个网站页面,在抓包工具我发现请求这个url的数据包的response有我需要的源代码,可是我通过请求这个url,打印出的响应数据发现,它没有网页上显示的数据,这是什么情况,葵丘求大佬解答!!!

suchocolate 发表于 2021-2-23 18:52:41

ajax

caly_fast 发表于 2021-2-23 18:55:58

suchocolate 发表于 2021-2-23 18:52
ajax

怎么分析呀

caly_fast 发表于 2021-2-23 18:58:58

suchocolate 发表于 2021-2-23 18:52
ajax

我捕获的阿贾克斯数据包也没得我要的数据呀,大佬

wp231957 发表于 2021-2-23 19:17:00

caly_fast 发表于 2021-2-23 18:58
我捕获的阿贾克斯数据包也没得我要的数据呀,大佬

还是发网址才是

caly_fast 发表于 2021-2-23 19:25:08

wp231957 发表于 2021-2-23 19:17
还是发网址才是

http://glidedsky.com/level/web/crawler-basic-1,这个网址要注册一下就可以访问了

caly_fast 发表于 2021-2-23 19:25:52

wp231957 发表于 2021-2-23 19:17
还是发网址才是

已经发网站了,正在审核{:5_99:}

YunGuo 发表于 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)

caly_fast 发表于 2021-2-23 20:27:36

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

问题解决了谢谢大佬,为啥不能把cookie放到params参数里呢?

YunGuo 发表于 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)

caly_fast 发表于 2021-2-23 22:56:27

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

懂了懂了膜拜大佬
页: [1]
查看完整版本: 简单爬虫问题