我是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是我的网站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()**我已经尽了最大的努力来解决这些问题,我尝试过的大多数解决方案都只会让问题变得更糟。请帮助我解决这些错误,因为我无法通过研究找到足够的解决方案。
发布于 2017-02-03 17:32:32
首先,我在docs for bs4中看到find_all的语法略有不同。
但假设您的语法也是正确的,它会失败,并返回None,因为一些找到的post_text没有文本内容(即.string)。你需要检查你的锚点,可能是源代码中的错误。
但是如果你想避免这个问题--使用
if post_text.string is not None:
content = post_text.string
words = content.lower().split()https://stackoverflow.com/questions/42020600
复制相似问题