import requests
import re
from lxml import etree
headers = {
‘User-Agent’: ‘Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36’
}
resp = requests.get(‘https://www.amazonaws.cn/ec2/pricing/ec2-linux-pricing/’, headers=headers)
all_area = resp.text.split(’<h3’)
all_area = all_area[1:]
通过h3标签分割
item = {}
for area in all_area:
# 区域名
area_name = ‘’.join(re.findall(’>(.*?)’, area))
item[area_name] = {}
# 实例名
area_sl = etree.HTML(area)
area_sl = area_sl.xpath(’//li[@class=“lb-accordion-group”]’)
for sl in area_sl:
# 所有的实例名字,比如按需实例
sl_name = ‘’.join(sl.xpath(’.//div[@class=“lb-txt-none lb-txt”]/text()’)).strip(’\n ‘)
# 所有的实例名字,比如按需实例
item[area_name][sl_name] = {}
sl1_name = ‘’
table_head = [i.lstrip(’\xa0’) for i in sl.xpath(’.//tr[1]/td/text()’)]
for tr in sl.xpath('.//tr'):
if ''.join(tr.xpath('.//td[1]/text()')).endswith('实例'):
sl1_name = ''.join(tr.xpath('.//td[1]/text()'))
item[area_name][sl_name][sl1_name] = []
continue
if sl1_name != '':
if tr.xpath('./td/text()')[0]!='\xa0':
item[area_name][sl_name][sl1_name].append(tr.xpath('./td/text()'))
# print(tr.xpath('./td/text()'))
# 实例下的所有类型实例
# 获得表头
print(item)