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

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

在没有.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)


回答:

首先明确一点,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 ']...

以上是 关于百度热搜排名爬取的一个小疑问? 的全部内容, 来源链接: utcz.com/p/938319.html

回到顶部