我是python的初学者,我开发了一个程序,用于抓取一个网站(销售东西),并在不同商品的标题中打印出不同单词的频率。
我的程序有三个功能: 1)一个函数,它接收网站的文本并将其精炼成一个字符串 2)一个函数,它接受该字符串并清理它,摆脱括号,逗号,星号等内容。 3)一个函数,然后获取该字符串并按照在网站上写入的次数对单词进行排序
我的BeautifulSoup4模块在这个程序中出错,这篇文章帮我摆脱了它:How to get rid of BeautifulSoup user warning? 虽然这在我的程序中又犯了两个错误: 1)我输入第一个函数的链接错误
File "/Users/lowryj1/PycharmProjects/untitled2/Jaer.py", line 39, in <module>
start('https://hongkong.asiaxpat.com/classifieds/glassware/')
这是错误的代码(链接是我正在抓取的网站):
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是我的网站网址所在的位置):
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()**
我尽力解决这些问题,我尝试的大多数解决方案只会让问题变得更糟。请帮助我解决这些错误,因为我无法通过研究找到解决这个问题的适当方法。
答案 0 :(得分:0)
首先,我发现docs for bs4中type
的语法略有不同。
但假设您的语法也正确,则会因为某些找到的onClose
没有文字内容(即find_all
)并返回post_text
而失败。你需要检查它的锚点,可能是源代码中的错误。
但如果你想避免这个问题 - 请使用
.string