开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 759|回复: 12
收起左侧

[易语言] B乎反爬

[复制链接]
结帖率:97% (63/65)
发表于 2023-4-2 01:16:45 | 显示全部楼层 |阅读模式   湖北省宜昌市
20精币
预期:爬取B乎话题下所有的内容,但是过不了反爬

话题网址:
https://www.zhihu.com/topic/19552706/hot

爬取data:
https://www.zhihu.com/api/v5.1/topics/19552706/feeds/essence?offset=10&limit=10&
https://www.zhihu.com/api/v5.1/topics/19552706/feeds/essence?offset=20&limit=10&
https://www.zhihu.com/api/v5.1/topics/19552706/feeds/essence?offset=30&limit=10&
https://www.zhihu.com/api/v5.1/topics/19552706/feeds/essence?offset=40&limit=10&
...........

这B乎反爬咋更新这么快咧,网上的办法都不顶用了,有没有大佬


补充内容 (2023-4-2 02:10):
第一页未反爬,从加载第二页开始被反爬了

补充内容 (2023-4-2 03:20):
网页通过滑轮滚动,往下自动加载,上面就是加载更多的请求


回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:100% (13/13)

签到天数: 2 天

发表于 2023-4-2 01:49:32 | 显示全部楼层   江苏省徐州市
爬取这种类似的用python来的比较方便吧!
[Python] 纯文本查看 复制代码
import requests
from bs4 import BeautifulSoup

# 设置请求头部信息
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}

# 请求页面内容
url = 'https://www.zhihu.com/topic/19552706/hot'
response = requests.get(url, headers=headers)
html_content = response.content

# 使用BeautifulSoup解析页面内容
soup = BeautifulSoup(html_content, 'html.parser')
question_items = soup.select('.HotList .HotItem')

# 遍历并输出每个问题的标题和链接
for item in question_items:
    title_tag = item.select_one('.HotItem-title a')
    title_text = title_tag.text.strip()
    title_link = 'https://www.zhihu.com' + title_tag['href']
    print(title_text, title_link)

回复

使用道具 举报

结帖率:97% (63/65)
 楼主| 发表于 2023-4-2 02:02:24 | 显示全部楼层   湖北省宜昌市
不二猫猫 发表于 2023-4-2 01:49
爬取这种类似的用python来的比较方便吧!
[mw_shl_code=python,true]import requests
from bs4 im ...

你这只有一页啊,后面没法获取

补充内容 (2023-4-2 02:04):
而且你单页代码是过期的,select选了个寂寞
回复

使用道具 举报

结帖率:100% (13/13)

签到天数: 2 天

发表于 2023-4-2 02:16:40 | 显示全部楼层   江苏省徐州市
实在不行那就,@chatgpt 问它呗!
回复

使用道具 举报

结帖率:97% (63/65)
 楼主| 发表于 2023-4-2 02:28:14 | 显示全部楼层   湖北省宜昌市
不二猫猫 发表于 2023-4-2 02:16
实在不行那就,@chatgpt 问它呗!

大佬你不要放弃啊,相信你可以的~加油!
回复

使用道具 举报

结帖率:100% (13/13)

签到天数: 2 天

发表于 2023-4-2 02:51:09 | 显示全部楼层   江苏省徐州市
soul741 发表于 2023-4-2 02:28
大佬你不要放弃啊,相信你可以的~加油!

[Python] 纯文本查看 复制代码
好的,需要使用Python来爬取这些内容。首先,我们需要安装一些必要的库,如requests和json:


import requests
import json


然后,我们可以编写一个函数来获取每一页的数据:


def get_data(offset):
    url = 'https://www.zhihu.com/api/v5.1/topics/19552706/feeds/essence?offset={}&limit=10&'.format(offset)
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
        'Referer': 'https://www.zhihu.com/topic/19552706/hot'
    }
    response = requests.get(url, headers=headers)
    data = json.loads(response.text)
    return data['data']


该函数接受一个偏移量作为参数,并返回该页面的所有数据。具体而言,它构建了API请求URL,添加了必要的头信息,并通过请求获取响应。然后,使用json库将响应文本解析为JSON格式,并返回其中的数据。

最后,我们可以循环调用该函数,以获取所有页面的数据:


all_data = []
for i in range(4):
    offset = i * 10
    data = get_data(offset)
    all_data.extend(data)


在这个例子中,我们只循环了4次,以获取前40个问题的数据。如果你想要更多的数据,可以增加循环的次数或者增加每一页数据的偏移量。

这样,我们就可以成功地爬取知乎热门话题19552706下的所有问题数据。


回复

使用道具 举报

结帖率:95% (84/88)

签到天数: 5 天

发表于 2023-4-2 03:14:15 | 显示全部楼层   美国
点击第二页按钮的时候有没有JS脚本发送一个换页请求
或者你先请求一遍第二页的html试试

切换的时候应该有个请求之类的
回复

使用道具 举报

结帖率:97% (63/65)
 楼主| 发表于 2023-4-2 03:14:47 | 显示全部楼层   美国
不二猫猫 发表于 2023-4-2 02:51
[mw_shl_code=python,true]好的,需要使用Python来爬取这些内容。首先,我们需要安装一些必要的库,如req ...

建议您添加必要的 x-zse-93    x-zse-96    x-zst-81    x-ab-pb  于headers,这样您代码看起来可信些

害我白高兴一场

点评

x-zse-93 x-zse-96 x-zst-81 x-ab-pb 这些参数需要定制区定制。   上海市上海市  发表于 2023-4-2 12:09
回复

使用道具 举报

结帖率:97% (63/65)
 楼主| 发表于 2023-4-2 03:17:42 | 显示全部楼层   美国
陽陽陽 发表于 2023-4-2 03:14
点击第二页按钮的时候有没有JS脚本发送一个换页请求
或者你先请求一遍第二页的html试试

没有换页按钮,滑轮往下滚动,动态加载的
https://www.zhihu.com/api/v5.1/topics/19552706/feeds/essence?offset=10&limit=10&
这个就是加载data的请求
回复

使用道具 举报

结帖率:95% (84/88)

签到天数: 5 天

发表于 2023-4-2 03:34:29 | 显示全部楼层   美国
soul741 发表于 2023-4-2 03:17
没有换页按钮,滑轮往下滚动,动态加载的
https://www.zhihu.com/api/v5.1/topics/19552706/feeds/essenc ...

滚动的时候有没有js请求呢。。。。
回复

使用道具 举报

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

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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