webcrawler字典中的未知错误(Python,模块:beautifulsoup4,运算符,请求)

webcrawler字典中的未知错误(Python,模块:beautifulsoup4,运算符,请求),python,Python,我是python的初学者,我开发了一个程序,用于抓取一个网站(销售商品)并打印出不同商品标题中不同单词的频率 我的程序中有三个功能: 1) 一个函数,它获取网站的文本并将其细化为字符串 2) 一个函数,它接受该字符串并将其清除,去掉括号、逗号、星号等。 3) 一个函数,然后接受这个字符串并根据单词在网站上的写入次数对其进行排序 我的BeautifulSoup4模块在这个程序中出现了一个错误,另一篇文章帮助我解决了这个问题: 尽管这在我的程序中又犯了两个错误: 1) 我在第一个函数中输入的链接出错

我是python的初学者,我开发了一个程序,用于抓取一个网站(销售商品)并打印出不同商品标题中不同单词的频率

我的程序中有三个功能: 1) 一个函数,它获取网站的文本并将其细化为字符串 2) 一个函数,它接受该字符串并将其清除,去掉括号、逗号、星号等。 3) 一个函数,然后接受这个字符串并根据单词在网站上的写入次数对其进行排序

我的BeautifulSoup4模块在这个程序中出现了一个错误,另一篇文章帮助我解决了这个问题: 尽管这在我的程序中又犯了两个错误: 1) 我在第一个函数中输入的链接出错

File "/Users/lowryj1/PycharmProjects/untitled2/Jaer.py", line 39, in <module>
start('https://hongkong.asiaxpat.com/classifieds/glassware/')
2) 这在我的代码行中出现了一个错误,我尝试在第一个函数中拆分字符串,并将所有字符都设置为小写,这只会导致以下错误:

File "/Users/lowryj1/PycharmProjects/untitled2/Jaer.py", line 11, in start
words = content.lower().split()
AttributeError: 'NoneType' object has no attribute 'lower'
这是错误的代码:

words = content.lower().split()
这是我出现错误的区域(url是我的网站url所在的位置):


我尽了最大的努力来解决这些问题,我尝试过的大多数解决方案只会让问题变得更糟。请帮助我解决这些错误,因为我无法通过研究找到解决此问题的适当方法。

首先,我在中看到
find\u all
的语法略有不同

但假设语法也正确,它将失败,因为找到的一些
post_文本
s没有文本内容(即
.string
),并返回
None
。你需要检查你的锚,可能是源代码中的错误

但是如果你想避免这个问题,就使用

if post_text.string is not None:
    content = post_text.string
    words = content.lower().split()

我需要你的代码片段来帮助。请加上。不要编写太多的代码,但是所有与您的问题相关的东西,可能都会在某个地方缩短细节。提示:您可以编辑您的问题。它看起来像
content=post\u text。字符串
是空的,因此当您尝试在下一行调用
.lower()
words=content.lower().split()
会抛出错误。你能检查一下post_text.string中是否有内容吗?@Craicerjack当你说check时,打印post_text.string是否可以检查它?如果是这样的话,post_text.string.中的内容似乎确实解决了问题,但在我这样做时,又出现了三个我不知道如何解决的问题。您指定的关于其他问题的数据仍然太少。另外,不幸的是,我认为您实际上是在要求为三个任务而不是您编写代码。这不是一个很好的风格。所以,试着问一些确切的问题。例如:我有代码,但它给了我一个错误,或者我想实现某个目标并尝试了我的代码,但它不起作用,或者某个库中有实现我的目标的方法。试试看!:-)
def start(url):
word_list = []
source_code = requests.get(url).text
soup = BeautifulSoup(source_code, "html5lib")
for post_text in soup.findAll('a', {'target': '_blank'}):
    content = post_text.string
    **words = content.lower().split()**
if post_text.string is not None:
    content = post_text.string
    words = content.lower().split()