在PyCharm中进行网页爬取时为何持续返回'None'?
问题分析与解决方法
你的代码返回None是因为找错了名言的位置:
- 你尝试通过
link.get('quote')获取<div class="quote">元素的quote属性,但这个div标签根本没有名为quote的属性,所以每次都返回None。 - 目标网站的名言文本实际嵌套在每个
div.quote下的<span class="text">标签内部。
修正后的代码如下:
import requests from bs4 import BeautifulSoup def trade_spider(max_pages): page = 1 while page <= max_pages: url = 'http://quotes.toscrape.com/page/' + str(page) source_code = requests.get(url) plain_text = source_code.text soup = BeautifulSoup(plain_text, "html.parser") for quote_div in soup.findAll('div', {'class': 'quote'}): # 定位到包含名言的span标签,提取文本 quote_text = quote_div.find('span', {'class': 'text'}).text print(quote_text) page += 1 trade_spider(1)
修改说明:
- 将遍历变量名从
link改为quote_div,更贴合实际含义 - 用
quote_div.find('span', {'class': 'text'})定位到名言所在的子标签,再通过.text提取标签内的纯文本内容
内容的提问来源于stack exchange,提问作者AkzOnTop
相关产品推荐
相关产品推荐

