从webpg中的嵌入式javascript中提取特定数据

2024-09-28 01:22:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我只想从链接中提取纬度:“http://hdfc.com/branch-locator”,使用下面给出的方法。 纬度在一个名为“location”的javascript变量中给出。 代码是:

from lxml import html
import re

URL = "http://hdfc.com/branch-locator"
var_lat = re.compile('(?<="latitude":).+(?=")')

main_page = html.parse(URL).getroot()

lat = main_page.xpath("//script[@type='text/javascript']")[1]

ans = re.search(var_lat,str(lat))

print ans

但结果却是“无”。在不改变解决问题的方法的情况下,我应该对代码进行哪些更改?在


Tags: 方法代码importrecombranchhttpurl
2条回答

下面我写的代码适用于网页中的嵌入式javascript。在

from lxml import html
from json import dump
import re

dumped_data = []

class theAddress:
    latude = ""

URL = "http://hdfc.com/branch-locator"
var_lat = re.compile('(?<="latitude":").+?(?=")')

main_page = html.parse(URL).getroot()

residue = main_page.xpath("//script[@type='text/javascript']/text()")[1]
all_latude = re.findall(var_lat,residue)

for i in range(len(all_latude)):
    obj = theAddress()
    obj.latude = all_latude[i]

    dumped_data.append(obj.__dict__)

f = open('hdfc_add.json','w')
dump(dumped_data, f, indent = 1)

它还使用json模块以适当的格式存储刮取的数据。在

我想需要做些小改动

排队

lat = main_page.xpath("//script[@type='text/javascript']")[1] # This should be 10 

排队

^{pr2}$

应该是

^{3}$

str(lat)将调用对象lat__str__函数,这与lat.text不同

一般来说,一个好主意是先检查所有的lat,然后再搜索所需的字符串。所以这应该是-

lat = main_page.xpath("//script[@type='text/javascript']")
for l in lat:
    if l.text is None:
        continue
    # print l.text
    ans = re.search(var_lat,(l.text))
    if ans is not None:
        break

print ans

抱歉,已编辑以修复此问题。注意:这可能不是您想要的精确解决方案,但是应该提供第一个匹配所需正则表达式的实例。您可能需要进一步处理ans。在

相关问题 更多 >

    热门问题