使用python通过网络抓取提取字符串

时间:2018-11-01 22:03:35

标签: python web-scraping

以下是HTML文件的一部分:

我只想对高亮显示的行进行webscrap。这是大国际剑联的一部分。对于这一部分,我尝试过:

container5 = container1[1 ].findAll("strong")

container6 = (container5[6]).text
print(container6)

但是输出是:

Address:

如何提取包含图像的" "部分内的地址的字符串?

1 个答案:

答案 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.