首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >webcrawler-字典中的未知错误(Python,模块: beautifulsoup4,operator,requests)

webcrawler-字典中的未知错误(Python,模块: beautifulsoup4,operator,requests)
EN

Stack Overflow用户
提问于 2017-02-03 17:13:05
回答 1查看 33关注 0票数 0

我是python的初学者,我已经开发了一个程序,是为了爬行一个网站(这是销售的东西),并打印出不同的词在标题中的不同的频率出售的项目。

我的程序中有三个函数: 1)获取网站文本并将其提炼成字符串的函数2)获取该字符串并对其进行清理的函数,去掉方括号、逗号、星号等内容。3)然后获取该字符串并根据单词在网站上被写入的次数对单词进行排序的函数

我的BeautifulSoup4模块在这个程序中有一个错误,这篇文章帮助我改掉了它:How to get rid of BeautifulSoup user warning?,尽管这在我的程序中又犯了两个错误: 1)我放在第一个函数中的链接错误

代码语言:javascript
复制
File "/Users/lowryj1/PycharmProjects/untitled2/Jaer.py", line 39, in <module>
start('https://hongkong.asiaxpat.com/classifieds/glassware/')

这是错误的代码(链接是我正在爬行的网站):

代码语言:javascript
复制
start('https://hongkong.asiaxpat.com/classifieds/glassware/')

2)这是我的代码行中的一个错误,我试图在第一个函数中拆分字符串,并将所有字符都设为小写,这只会导致以下错误:

代码语言:javascript
复制
File "/Users/lowryj1/PycharmProjects/untitled2/Jaer.py", line 11, in start
words = content.lower().split()
AttributeError: 'NoneType' object has no attribute 'lower'

这是错误的代码:

代码语言:javascript
复制
words = content.lower().split()

这是我有错误的地方(url是我的网站url出现的地方):

代码语言:javascript
复制
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()**

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

EN

回答 1

Stack Overflow用户

发布于 2017-02-03 17:32:32

首先,我在docs for bs4中看到find_all的语法略有不同。

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

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

代码语言:javascript
复制
if post_text.string is not None:
    content = post_text.string
    words = content.lower().split()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42020600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档