|
|
51CTO旗下网站
|
|
移动端

1.4.1 列表

《从零开始学Python网络爬虫》第1章Python零基础语法入门,本章立足基础,讲解Python和PyCharm的安装及Python最简单的法基础和爬虫技术中所需的Python语法。本节为大家介绍列表。

作者:罗攀/蒋仟来源:机械工业出版社|2017-12-07 14:46

【51CTO技术沙龙】10月27日,让我们共同探索AI场景化应用实现之道

1.4  Python数据结构

数据结构是存放数据的容器,本节主要讲解Python的4种基本数据结构,即列表、字典、元组和集合。

1.4.1  列表

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

(1)列表中的每一个元素都是可变的。

(2)列表的元素都是有序的,也就是说每个元素都有对应的位置(类似字符串的切片和索引)。

(3)列表可以容纳所有的对象。

列表中的每个元素都是可变的,这意味着可以对列表进行增、删、改操作,这些操作在爬虫中很少使用,因此这里不再给读者添加知识负担。

列表的每个元素都有对应的位置,这种用法与字符串的切片和索引很相似。

  1. list = ['peter', 'lilei', 'wangwu', 'xiaoming']  
  2. print(list[0])  
  3. print(list[2:])  
  4. # result  
  5. peter  
  6. ['wangwu', 'xiaoming'] 

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

列表可以容纳所有的对象:

  1. list = [  
  2.   1,  
  3.   1.1,  
  4.   'string',  
  5.   print(1),  
  6.   True,  
  7.   [1, 2],  
  8.   (1, 2),  
  9. {'key', 'value'}  

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

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

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

  1. names = ['xiaoming','wangwu','peter']  
  2. ages = [23,15,58]  
  3. for name, age in zip(names, ages):  
  4.     print(name,age)  
  5. # result  
  6. xiaoming 23  
  7. wangwu 15  
  8. peter 58 

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

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

  1. http://bj.xiaozhu.com/search-duanzufang-p1-0/  
  2. http://bj.xiaozhu.com/search-duanzufang-p2-0/  
  3. http://bj.xiaozhu.com/search-duanzufang-p3-0/  
  4. http://bj.xiaozhu.com/search-duanzufang-p4-0/  
  5. …… 

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

  1. urls = ['http://bj.xiaozhu.com/search-duanzufang-p{}-0/'.format(number) for number in range(1,14)]  
  2. for url in urls:  
  3.       print(url)  

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

注意:本网站为小猪短租网。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

《广域网》

在开始学习WAN资料时,我经常面对资料深度不够或者为电气工程师编写的书。另外,在看了几本书,并且对Internet进行了研究以后,我觉得应当...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊