Python如果字符串包含在href中

时间:2018-08-31 14:32:43

标签: python web-scraping

这是我的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

2 个答案:

答案 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,否则请跳过返回的标签。

祝你好运。