在浏览器中看到的数字,经由CSS选择器换位HTML中代码之后呈现出来的数字。
先拿到第一级的 b 标签所有值,构建原始价格列表
循环剩余所有b标签,拿到 位置值 和 替换价格 组成字典,存入新构建的一个替换价格列表
根据替换价格列表中的 位置值的价格 和原始价格列表中的价格做替换,
输出原始价格列表,得到真实价格
import requests
from scrapy import Selector
import re
url = 'http://www.porters.vip/confusion/flight.html'
response = requests.get(url)
html = Selector(text=response.text)
ems = html.xpath('//em[@class="rel"]').extract()
#每个em标签在循环
for em in ems:
html_em_element = Selector(text=em)
html_bs= html_em_element.xpath('//b').extract()
b_first = html_bs.pop(0)
html_b_first = Selector(text=b_first)
base_price = html_b_first.xpath('//i/text()').extract()
real_prices = []
for html_b_next in html_bs:
location = re.search('left:(.*?)px', html_b_next, re.S).group(1)
price = re.search('">(.*?)</b>', html_b_next, re.S).group(1)
real_prices.append({'location': location, 'price': price})
for real_price in real_prices:
location = real_price.get('location')
price = real_price.get('price')
index = int(int(location)/16)
base_price[index] = price
print(base_price)
有问题请联系博主:
微信:hrvrap
qq:2580419087
来源:CSDN
作者:爬虫虫
链接:https://blog.csdn.net/qq_36917018/article/details/104039217