以下是HTML文件的一部分:
我只想对高亮显示的行进行webscrap。这是大国际剑联的一部分。对于这一部分,我尝试过:
container5 = container1[1 ].findAll("strong")
container6 = (container5[6]).text
print(container6)
但是输出是:
Address:
如何提取包含图像的" "
部分内的地址的字符串?
答案 0 :(得分:0)
我喜欢使用python split()
函数解析这种事情。需要注意的是数据周围的重复模式。
...<strong>SOME-Field-Name:</strong> ...
"The desired value"
<br> ...
此模式为您提供了一个可以使用代码的地方,从而为某些代码提供了一种方法:
html = "... <strong>Address:</strong>\n\" 1100 Space Park etc.\"\n<br>\n ..."
# extract the Address field, between it's heading and </br>
field = html.split("Address:</strong>")[1].split("<")[0].strip()
# Trim away the quotes and whitespace
value = field.split("\"")[1].strip()
输出:
>>> value
'1100 Space Park etc.'
split function将字符串切成一个列表,删除与之分割的部分。
因此,第一个拆分为['... <strong>', '\n\" 1000 Space Park...' ]
,而我们仅取第二个项目[1]
。然后,我们用<
重新分割,它提供<br>
之前的所有内容以及我们不关心的其他内容,因此第一个元素是守护者[0]
。
我们使用strip()
清除一些空格,然后将结果取消引用。
使用这种方法,您也可以获取其他值。在功能上可能最好。
def getField(html, field_name):
# TODO - add some error checking for when not found, etc.
field = html.split(field_name+":</strong>")[1].split("<")[0].strip()
value = field.split("\"")[1].strip()
return value
address = getField(html, "Address")
size = getField(html, "Gross SqFt")
power = getField(html, "Total Power")
# etc.