我正在尝试从此站点提取时间表数据。内容包含在类为.departures-table的div中。我想忽略前两行并将数据存储在数组中,但是它不起作用。我显然犯了一个错误,但找不到哪个。谢谢
snav_live_departures_url = "https://www.snav.it/"
headers = {'user-agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.3'}
request = urllib.request.Request(snav_live_departures_url,headers=headers)
html = urllib.request.urlopen(request).read()
soup = BeautifulSoup(html,'html.parser')
snav_live_departures = []
snav_live_departures_table = list(soup.select('.departures-table div')) [2:]
print(snav_live_departures_table)
for div in snav_live_departures_table:
div = div.select('departures-row')
snav_live_departures.append({
'TIME':div[4].text,
'DEPARTURE HARBOUR':div[0].text,
'ARRIVAL HARBOUR':div[1].text,
'STATUS':td[3].select('span.tt-text')[0].text,
'PURCHASE LINK':div[6].select('a')[0].attrs['href']
})
如前所述,在处理此类JavaScript繁重的页面时,您可能需要在浏览器中的Dev Tools上监视Network,以查看数据的加载方式。
此代码将生成一个漂亮的字典,供您根据需要解析数据:
import requests
import json
URL = 'https://booking.snav.it/api/v1/dashboard/nextDepartures?callback=jQuery12345&_=12345'
r = requests.get(URL)
s = r.content.decode('utf-8')
data = json.loads(s[16:len(s)-2])
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句