我正在尝试从该网站的第二行中抓取 url:https://www.cwb.gov.tw/V7/js/HDRadar_1000_n_val.js。我使用 python 来爬行,但不确定是否应该使用 beautifulsoup 或正则表达式。我使用python BS4来爬行。但我不知道如何仅使用 url 捕获第二行。在我的尝试中,它捕获了所有网站。import requestsimport refrom bs4 import BeautifulSoupres = requests.get('https://www.cwb.gov.tw/V7/js/HDRadar_1000_n_val.js')soup = BeautifulSoup(res.text,'html.parser')print(soup)预期的:/V7/observe/radar/Data/HD_Radar/CV1_1000_201903271140.png实际的:var HDRadar_1000_n_val=new Array( newArray/V7/observe/radar/Data/HD_Radar/CV1_1000_201903271140.png("2019/03/27 11:40","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903271140.png"), new Array("2019/03/27 11:30","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903271130.png"), new Array("2019/03/27 11:20","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903271120.png"), new Array("2019/03/27 11:10","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903271110.png"), new Array("2019/03/27 11:00","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903271100.png"), new Array("2019/03/27 10:50","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903271050.png"), new Array("2019/03/27 10:40","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903271040.png"), new Array("2019/03/27 10:30","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903271030.png"), new Array("2019/03/27 10:20","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903271020.png"), new Array("2019/03/27 10:10","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903271010.png"), new Array("2019/03/27 10:00","/V7/observe/radar/Data/HD_Radar/CV1_1000_201903271000.png"), new Array("2019/03/27 ...
2 回答
红颜莎娜
TA贡献1842条经验 获得超13个赞
您无法使用 解析文本bs4。因此,请使用split. 然后遍历每一行并拆分,分隔符以获取url.
lines = res.text.strip(');\n').split('),\n')
for line in lines:
print(line.split(',')[-1].strip('"'))
RISEBY
TA贡献1856条经验 获得超5个赞
这是如何做到的:
import requests
import re
res = requests.get('https://www.cwb.gov.tw/V7/js/HDRadar_1000_n_val.js')
pat = re.compile("(/V7/.*?.png)")
p = 0
while True:
m = pat.search(res.text, p)
if not m:
break
print m.group(1)
p = m.end()
这应该是非常有效的。原始数据没有额外的副本或拆分,编译后的正则表达式是一种非常快速的数据搜索方式。
任何获得正确结果并在一秒钟内完成的解决方案都应该没问题。您可能需要一个更大的列表才能发挥作用。
添加回答
举报
0/150
提交
取消
