问题描述
我是 Python 和编码的新手。我找到了一个抓取网站的代码,但是每当我运行该代码时,我得到的只是退出代码 0(我知道这很好,因为这意味着没有错误)但我没有得到任何输出。按照我正在使用的代码。
有人知道如何解决这个问题吗?
from collections import Counter
import requests
from bs4 import BeautifulSoup
def my_start(url):
my_wordlist = []
my_source_code = requests.get(url).text
my_soup = BeautifulSoup(my_source_code,'html.parser')
for each_text in my_soup.findAll('div',{'class':'entry-content'}):
content = each_text.text
words = content.lower().split()
for each_word in words:
my_wordlist.append(each_word)
clean_wordlist(my_wordlist)
# Function removes any unwanted symbols
def clean_wordlist(wordlist):
clean_list =[]
for word in wordlist:
symbols = '!@#$%^&*()_-+={[}]|\;:"<>?/.,'
for i in range (0,len(symbols)):
word = word.replace(symbols[i],'')
if len(word) > 0:
clean_list.append(word)
create_dictionary(clean_list)
def create_dictionary(clean_list):
word_count = {}
for word in clean_list:
if word in word_count:
word_count[word] += 1
else:
word_count[word] = 1
c = Counter(word_count)
# returns the most occurring elements
top = c.most_common(10)
print(top)
# Driver code
if __name__ == '__main__':
my_start("https://www.tutorialspoint.com/python3/python_overview.htm/")
解决方法
您正在尝试搜索类 entry-content
,但您从 HTML
获取的 URL
中似乎没有类。转到 URL
并检查该页面并找到您要查找的类并更新代码中以下行的行:
for each_text in my_soup.findAll('div',{'class':'entry-content'}):
在你的代码中,你永远不会进入这个 for 循环,其余的函数也不会被调用。
,我在我的电脑上运行了你的代码。整个 for 循环(如下所述)没有运行。
for each_text in my_soup.findAll('div',{'class':'entry-content'}):
这是因为该页面上有“entry-content”div,因此不会调用其余函数。当我提到网站代码中的 div 类时,该代码适用于其他网址。
下次尝试使用调试器或使用打印语句调试您的代码。祝你好运!