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

时间:2017-02-03 09:13:05

标签: python

我是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()**

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

1 个答案:

答案 0 :(得分:0)

首先,我发现docs for bs4type的语法略有不同。

但假设您的语法也正确,则会因为某些找到的onClose没有文字内容(即find_all)并返回post_text而失败。你需要检查它的锚点,可能是源代码中的错误。

但如果你想避免这个问题 - 请使用

.string