关于百度热搜排名爬取的一个小疑问?

在没有.pop之前rank列表里明明索引0,1是“ ”,索引2是“1”,但是我.pop索引0和1后,怎么原来的索引2变成了“ ”?

import requests
from lxml import etree

# 1.目标 url。
url = 'http://top.baidu.com/buzz?b=1&fr=topindex'
# 模拟浏览器请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36'}

# 2.发送请求
data = requests.get(url, headers=headers)
# 转码
data.encoding = "utf-8"
datas = data.text
# 转换
html = etree.HTML(datas)

# 3.解析数据         xpath 取出来的数据是一个列表。
# 排名
rank = html.xpath('//div[contains(@class,"index_1Ew5p")]/text()')
rank.pop(0)
#rank.pop(1)      #疑问点!!!!!!!!!!!!为什么我pop掉索引1的时候,索引2的值明明是"1"为什么会变成" "?


print(rank)
阅读 2k
2 个回答

首先明确一点,python的list类型是可变类型
当pop(0)的时候,list[0]会变为pop之前list[1]的值

l = [ i for i in range(4)]
for i in range(len(l)):
    print(l.pop())
----    
3
2
1
0
for i in l:
    print(l.pop())
----
3
2
rank = html.xpath('//div[contains(@class,"index_1Ew5p")]/text()')

返回的有两个空格,你可以print看下
[' ', ' ', ' 1 ', ' 2 ']...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题