关于百度热搜排名爬取的一个小疑问?
在没有.pop之前rank列表里明明索引0,1是“ ”,索引2是“1”,但是我.pop索引0和1后,怎么原来的索引2变成了“ ”?
import requestsfrom 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