https://scrapingclub.com/exercise/detail_cookie/

本文详细介绍了如何使用Scrapy框架从响应头中解析并处理Cookie,包括提取token和设置自定义请求头,实现对特定网站的爬取。通过实际代码示例,读者可以学习到如何动态获取和应用Cookie,以解决网站的反爬虫策略。
    def parse(self, response):


        pattern=re.compile('token=(.*?);')
        token=pattern.findall( response.headers.get("set-cookie").decode("utf-8"))[0]
        cookie = {
            '__cfduid': 'd67f5270ed84c0000af9c771fdee950631551004073',
            '_ga': 'GA1.2.2009295084.1551004056',
            '_gid': 'GA1.2.513859849.1551004056',
            'token': token
        }
        yield scrapy.Request(url='https://scrapingclub.com/exercise/ajaxdetail_cookie/?token='+str(token),cookies=cookie,headers=header,callback=self.parse_json)

settings.py

COOKIES_ENABLED = True

DEFAULT_REQUEST_HEADERS = { # 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', # 'Accept-Language': 'en', # 'cookie': '__cfduid=d67f5270ed84c0000af9c771fdee950631551004073; _ga=GA1.2.2009295084.1551004056; _gid=GA1.2.513859849.1551004056; token=685NVSGV2O', # 'dnt': '1', 'referer': 'https://scrapingclub.com/exercise/detail_cookie/', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36', 'x-requested-with': 'XMLHttpRequest' }

 

转载于:https://www.cnblogs.com/bamboozone/p/10443641.html

你看到的输出: ``` ✅ Skipping: /home/dell/PycharmProjects/LightWeight_exercise/data1/part1/output/./processed_5044335.ply ... 进程已结束,退出代码为 0 ``` 说明:**推理脚本成功运行,但跳过了所有文件,因为它们已经被处理过(输出文件已存在)** --- ## ✅ 当前状态解读 | 现象 | 含义 | |------|------| | `Starting inference...` | 脚本正常启动 | | `Skipping (already exists)` | 检测到输出路径下已有同名 `processed_xxx.ply` 文件 | | **没有报错、退出码为 0** | 程序执行成功,只是没做新工作 | ➡️ 这不是错误!而是 **去重保护机制生效了**。 --- ## 🧩 为什么会出现“全部跳过”? 因为你之前已经用同样的输入和输出路径运行过一次推理脚本。 例如: - 输入:`5044335.ply` - 输出:`processed_5044335.ply` 只要这个文件还存在于目标目录中,下次运行就会被跳过。 --- ## ✅ 如何让它重新处理?(三种方法) ### ✅ 方法 1:删除已生成的 `processed_*.ply` 文件(推荐测试时使用) ```bash # 删除所有已处理文件 rm /home/dell/PycharmProjects/LightWeight_exercise/data1/part1/output/**/*.ply -f ``` 或者在 Python 中加一句清理代码(仅调试用): ```python import shutil shutil.rmtree(OUTPUT_FOLDER, ignore_errors=True) os.makedirs(OUTPUT_FOLDER, exist_ok=True) ``` 然后再运行 `infer.py`,就会重新处理所有文件。 --- ### ✅ 方法 2:修改输出文件名前缀,避免冲突 比如把: ```python output_filename = f'processed_{base_name}.ply' ``` 改为: ```python output_filename = f'v2_processed_{base_name}.ply' # 或加上时间戳 ``` 这样就不会与旧文件重名,自然不会跳过。 --- ### ✅ 方法 3:禁用“跳过已存在”逻辑(临时) 找到这段代码: ```python if os.path.exists(output_path): print(f"✅ Skipping (already exists): {output_path}\n") return 0, 0, 0 ``` **注释掉或删除它**: ```python # if os.path.exists(output_path): # ← 注释掉 # print(f"✅ Skipping (already exists): {output_path}\n") # return 0, 0, 0 ``` 这样即使文件存在也会强制重写。 > ⚠️ 注意:这可能导致旧结果被覆盖,请提前备份重要数据。 --- ## ✅ 如何验证模型真的有效? 建议你: ### Step 1:手动选一个文件重新推理(清空 + 运行) - 删除某个 `processed_5044335.ply` - 再次运行 `infer.py` - 观察是否重新生成并打印耗时信息 ### Step 2:可视化对比原始与简化点云 使用 [CloudCompare](https://www.daniel-muyr.com/cloudcompare/) 或 Open3D 查看: ```python # quick_view.py import open3d as o3d import sys pcd = o3d.io.read_point_cloud(sys.argv[1]) print(pcd) o3d.visualization.draw_geometries([pcd]) ``` 运行: ```bash python quick_view.py /path/to/5044335.ply python quick_view.py /path/to/processed_5044335.ply ``` 观察: - 是否保留边缘? - 是否出现空洞? - 是否只留下噪声点? --- ## ✅ 建议增强功能(可选) 你可以给输出文件加 **保留比例标记**,便于区分不同实验: ```python ratio_str = f"{target_ratio:.3f}".replace('.', 'p') # 0.075 → 0p075 output_filename = f'processed_{ratio_str}_{base_name}.ply' ``` 这样你可以安全地保存多组结果。 --- # 知识点 - **文件存在性检查是良好实践**:防止重复计算浪费时间。 - **跳过逻辑不影响正确性**:程序设计合理,非 bug。 - **重跑需清缓存**:删除输出文件或改名是常见调试手段。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值