如果没有数据,尝试使用 bs4 跳过属性
Trying to use bs4 to skip an attribute if there is no data
我正在尝试编写一个程序,从 URL 中提取数据并对其进行格式化,以便我可以将其复制到另一个程序中。如果 imagelink 标签中没有 img src,我将无法跳过某个项目,但一切正常。
import requests, sys, webbrowser, bs4
res = requests.get('http://hzws.selco.info/prototype.php?type=new-arrivals&lib=nor&collect=Bnewnf,Bnewmys,Bnewf,Bnewsf&days=14&key=7a8adfa9aydfa999997af')
res.raise_for_status()
soup = bs4.BeautifulSoup(res.text, "lxml")
img = soup.select('imagelink') #why won't this pull anything?!?!?!?!
link = soup.select('cataloglink')
length = min([14, len(img)])
for i in range(length):
img1 = img[i].getText()
link1 = link[i].getText()
print('<div>' + link1 + img1 + '</a></div>')
现在这会打印所有 URL,无论是否有图像链接附加到它。如果没有 img src,我已经尝试了许多不同的方法来让它跳过一个项目。有什么想法吗?
查看 BS4 docs,看起来 "lxml" 实际上是一个 HTML 解析器。您应该将其替换为 "lxml-xml",因为您正在尝试抓取 XML 页面。那应该有效。
我正在尝试编写一个程序,从 URL 中提取数据并对其进行格式化,以便我可以将其复制到另一个程序中。如果 imagelink 标签中没有 img src,我将无法跳过某个项目,但一切正常。
import requests, sys, webbrowser, bs4
res = requests.get('http://hzws.selco.info/prototype.php?type=new-arrivals&lib=nor&collect=Bnewnf,Bnewmys,Bnewf,Bnewsf&days=14&key=7a8adfa9aydfa999997af')
res.raise_for_status()
soup = bs4.BeautifulSoup(res.text, "lxml")
img = soup.select('imagelink') #why won't this pull anything?!?!?!?!
link = soup.select('cataloglink')
length = min([14, len(img)])
for i in range(length):
img1 = img[i].getText()
link1 = link[i].getText()
print('<div>' + link1 + img1 + '</a></div>')
现在这会打印所有 URL,无论是否有图像链接附加到它。如果没有 img src,我已经尝试了许多不同的方法来让它跳过一个项目。有什么想法吗?
查看 BS4 docs,看起来 "lxml" 实际上是一个 HTML 解析器。您应该将其替换为 "lxml-xml",因为您正在尝试抓取 XML 页面。那应该有效。