这是我的python代码。
r = requests.get("myurl")
data = r.text
soup = BeautifulSoup(data, "lxml")
texttmp = ""
for link in soup.find_all('a'):
image = link.get("href")
if ".jpg" in image:
print(image)
当我尝试运行此代码时,出现以下错误。我该如何解决?
TypeError Traceback (most recent call last)
<ipython-input-35-618698d3a2d7> in <module>()
11 for link in soup.find_all('a'):
12 image = link.get("href")
---> 13 if ".jpg" in image:
14 print(image)
15
TypeError: argument of type 'NoneType' is not iterable
答案 0 :(得分:3)
这是在告诉您找不到href
字符串。因此,在查看None
是否在图片标签中之前,需要检查".jpg"
:
if image and ".jpg" in image:
但是,这并不是唯一的事情。您还尝试从找到的链接节点中get
。您应该检查a
的属性为href
(有些没有,示例,请参见Bootstrap!):
for link in soup.find_all('a'):
if link.has_attr('href'):
#rest of code
参见this SO post和其他类似的内容(我也应该先用Google搜索。)
答案 1 :(得分:1)
除了表示指向其他资源的链接之外,HTML锚标记<a ...>
还可以充当文档中某个位置的命名标记,即所谓的名称标记<a name=whatever>
,从而允许标记的位置成为使用URL http://example.com/#whatever
这可能是您遇到的问题,因为名称标签将没有href来指示其指向的资源。
您需要检查href是否返回None,否则请跳过返回的标签。
祝你好运。