我试图在网页上获取图片的网址并使用此代码:
import httplib2
from BeautifulSoup import BeautifulSoup, SoupStrainer
http = httplib2.Http()
status, response = http.request('URL')
for link in BeautifulSoup(response, parseOnlyThese=SoupStrainer('img')):
if "visibility:hidden" not in link:
print "IMAGE PATH: "+link['src']
我想过滤隐藏图像的链接,如:
img style="position:absolute;z-index:-3334;top:0px;left:0px;visibility:hidden;" src="https://.....
但是我无法过滤"链接"变量。如果总是通过。
链接变量是什么类型的?串?我可以将其转换为字符串类型吗? 我该怎么办? 谢谢。
编辑: 谢谢M. Leung 我尝试使用你给出的构造函数: BeautifulSoup(回复,' html.parser',parse_only = SoupStrainer(' img') 但这对我失败了: Traceback(最近一次调用最后一次): 文件" getLinksFromPage3.py",第10行,in 对于BeautifulSoup中的链接(回复,' html.parser',parse_only = SoupStrainer(' img')): 文件" /usr/lib/python2.7/dist-packages/BeautifulSoup.py",第1522行, init BeautifulStoneSoup。 init (self,* args,** kwargs) TypeError: init ()得到了一个意外的关键字参数' parse_only'
答案 0 :(得分:0)
首先使用tag.attrs
获取标签上的attrs,然后过滤attr。以下代码工作。
此外,您应该定义哪种解析器适合该情况,将会产生更好的结果。
for link in BeautifulSoup(response, 'html.parser', parse_only=SoupStrainer('img')):
if 'style' in link.attrs:
if "visibility:hidden" not in link['style']:
print link['src']
else:
print link['src']
答案 1 :(得分:0)
谢谢M. Leung。 我不得不改为bs4。
import httplib2
from bs4 import BeautifulSoup, SoupStrainer
http = httplib2.Http()
status, response = http.request('URL')
for link in BeautifulSoup(response, 'html.parser', parse_only=SoupStrainer('img')):
if 'style' in link.attrs:
if "visibility:hidden" not in link['style']:
print link['src']
else:
print link['src']