一起来学Python爬虫基础篇——列表元素集合和字典

已收录   阅读次数: 593
2021-01-0610:16:00 发表评论
摘要

之前,伯衡君介绍了Python的一些基础知识,命名和循环判断,具体可以参看下方的前情提要,本篇文章则是继续沿着上篇继续探索接下来的内容,也就是list和tuple等,分享给大家……

分享至:
一起来学Python爬虫基础篇——列表元素集合和字典

开篇寄语

之前,伯衡君介绍了Python的一些基础知识,命名和循环判断,具体可以参看下方的前情提要,本篇文章则是继续沿着上篇继续探索接下来的内容,也就是list和tuple等,分享给大家。

前情提要

内容详情

python数据结构

数据结构是存放数据的容器,Python有4种基本数据结构,包括列表、字典、元组和集合。

列表

在爬虫实战中,使用最多的就是列表数据结构,不论是构造出的多个URL,还是爬取到的数据,大多数都为列表数据结构。下面首先介绍列表最显著的特征:

  • 列表中的每一个元素都是可变的。
  • 列表的元素都是有序的,也就是说每个元素都有对应的位置(类似字符串的切片和索引)。
  • 列表可以容纳所有的对象。
  • 列表中的每个元素都是可变的,这意味着可以对列表进行增、删、改操作,这些操作在爬虫中很少使用,因此这里不再给读者添加知识负担。
  • 列表的每个元素都有对应的位置,这种用法与字符串的切片和索引很相似。
list = ['peter', 'lilei', 'wangwu', 'xiaoming']
print(list[0])
print(list[2:])

#打印结果
#peter
#['wangwu', 'xiaoming']

如果为切片,返回的也是列表的数据结构。

列表可以容纳所有的对象,如下面所示:

list = [
  1,
  1.1,
  'string',
  print(1),
  True,
  [1, 2],
  (1, 2),
  {'key', 'value'}
]

列表中会经常用到多重循环,因此读者有必要去了解和使用多重循环。现在,摆在读者面前有两个列表,分别是姓名和年龄的列表:

names = ['xiaoming','wangwu','peter']
ages = [23,15,58]

这时可以通过多重循环让name和age同时打印在屏幕上:

names = ['xiaoming','wangwu','peter']
ages = [23,15,58]
for name, age in zip(names, ages):
    print(name,age)
#输出结果
#xiaoming 23
#wangwu 15
#peter 58

注意:多重循环前后变量要一致。

在爬虫中,经常请求多个网页,通常情况下会把网页存到列表中,然后循环依次取出并访问爬取数据。这些网页都有一定的规律,如果是手动将这些网页URL存入到列表中,不仅花费太多时间,也会造成代码冗余。这时可通过列表推导式,构造出这样的列表,例如某个网站每页的URL是这样的(一共4页):

https://www.luckydesigner.space/javascriptcode/page/1/
https://www.luckydesigner.space/javascriptcode/page/2/
https://www.luckydesigner.space/javascriptcode/page/3/
https://www.luckydesigner.space/javascriptcode/page/4/

通过以下代码即可构造出4页URL的列表数据:

urls = ['https://www.luckydesigner.space/javascriptcode/page/{}/'.format(number) for number in range(1,5)]
for url in urls:
    print(url)

通过一行代码即可构造出来,通过for循环打印出每个URL。

字典

Python的字典数据结构与现实中的字典类似,以键值对('key'-'value')的形式表现出来。本文中只讲解字典的创造,字典的操作在后面会详细介绍。字典的格式如下:

user_info = {
  'name':'xiaoming',
  'age':'23',
  'sex':'man'
}

注意:插入数据库需用字典结构。

元组和集合

在爬虫中,元组和集合很少用到,因此这里只做简单介绍。元组类似于列表,但是元组的元素不能修改只能查看,元组的格式如下:

tuple = (1,2,3)

集合的概念类似数学中的集合。每个集合中的元素是无序的,不可以有重复的对象,因此可以通过集合把重复的数据去除。

list = ['xiaoming','zhangyun','xiaoming']
set = set(list)
print(set)
#打印结果 {'zhangyun', 'xiaoming'}

注意:集合是用大括号构建的。

进阶玩法

当掌握到一定程度后,就可以参看以下文章来进行爬虫啦:

  • 我的微信
  • 微信扫一扫加好友
  • weinxin
  • 我的微信公众号
  • 扫描关注公众号
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: