说到底,调试爬虫不是堆日志,而是让变量“开口说话”。最常被跳过的一步,也是最重要的一步:在发请求之后、解析之前,亲手看看 response.status_code、response.url 和 response.text[:200] —— 这三行代码,比写十个正则都管用。

Python爬虫如何快速调试_使用断点调试技术检查变量值

PyCharm 里打不了断点?检查调试配置是否启用 Python Debugger

断点不生效,十有八九是你点错了按钮——用了 Run 而不是 Debug。PyCharm 默认的 Run 模式会直接跳过所有断点,哪怕是代码里写死了 breakpoint() 也不会停。

requests 返回 200 却拿不到数据?在断点处 inspect response.textresponse.content

表面上看 HTTP 200,但数据就是拿不到,这种坑其实最常见。调用 response.json() 报错,或者 response.text 返回的是空字符串或登录页的 HTML,这通常意味着服务端做了反爬或重定向,而你拿到的响应体,已经被悄悄替换掉了。

BeautifulSoup 解析结果为空?在断点中验证 soup.titlesoup.find('div', class_='item')

很多朋友一拿到 response.text,就急着用 soup = BeautifulSoup(response.text, 'html.parser') 然后直接调 find_all,结果返回的是空列表。根本原因无非两个:HTML 结构和你预想的不一样,或者解析器选错了。

Scrapy 的 parse 方法变量看不见?用 breakpoint() 替代 IDE 断点

PyCharm 的图形化断点在 Scrapy 里经常耍脾气,尤其在 parse(self, response) 方法里设断点,程序可能直接就跳过去了,因为 Scrapy 跑在 Twisted 的异步循环里。

本文转载于:https://www.php.cn/faq/2314992.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。