鱼C论坛

 找回密码
 立即注册
查看: 2457|回复: 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就行了,然后正常提取数据去求和。
  1. import requests
  2. from lxml import etree
  3. url = 'http://glidedsky.com/level/web/crawler-basic-1'
  4. headers = {
  5.     'user-agent': 'Mozilla/5.0',
  6.     'cookie': ''   #  复制浏览器cookie
  7. }
  8. res = requests.get(url, headers=headers)
  9. sel = etree.HTML(res.text)
  10. nums = sel.xpath('//*[@class="col-md-1"]/text()')
  11. num_sum = 0
  12. for num in nums:
  13.     num_sum += int(num.replace('\n', '').strip())
  14. print(num_sum)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-2-23 18:52:41 | 显示全部楼层
ajax
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-2-23 18:55:58 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

我捕获的阿贾克斯数据包也没得我要的数据呀,大佬
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

还是发网址才是
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

http://glidedsky.com/level/web/crawler-basic-1,这个网址要注册一下就可以访问了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

已经发网站了,正在审核
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

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

问题解决了谢谢大佬,为啥不能把cookie放到params参数里呢?
小甲鱼最新课程 -> https://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:
  1. cookies = {
  2.     '键': '值',
  3. }
  4. res = requests.get(url, headers=headers, cookies=cookies)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

懂了懂了膜拜大佬
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-1 15:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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