我们一直说Python比较简单,代码体量没有别的程序那么大,对于初学者,尤其是零编程基础的初学者来说,感触没有那么明显,那么今天就让你见识一下:爬取豆瓣读书页面,Python用16行代码就搞定了!
python+seleniu这个很神奇的组合,或许你还不知道selenium是什么,不过没关系,我先给你百度一下:
Selenium (浏览器自动化测试框架):
Selenium 是一个用于Web应用程序测试的工具。
Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。
支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。
原谅我是一个没怎么见过世面的程序员,当我看到代码运行之后电脑自动打开浏览器那一刻觉得简直不要太酷!所以我必须要写一篇文来和大家一起分享一些喜悦的心情。
首先我们先确定好要爬取的目标网页:
豆瓣读书下一个标签为小说的页面:
https://book.douban.com/tag/%E5%B0%8F%E8%AF%B4:
敲黑板!干货来了同志们!下面我将带领着大家用16行代码实现我们的这个爬虫。仅仅需要16行代码,看了不吃亏,看了不上当!
先来解析一下我们想要爬取的目标网页的结构:
先找到包含所有图书内容的标签——一个类名为content的div盒子.
再找包含每一本书内容的标签——li.
虽然我们发现了每一本书的内容都包含在li标签下,但是还没有找到包含具体文本信息的标签,所以还要继续找。
找到了,就是它:可爱的类名为“info”的div盒子!
分析好网页结构之后,现在我们就可以开始动手写代码啦。前方高能!
源代码如下:
#coding:utf-8from selenium import webdriverclass DouBan:
def __init__(self):
self.dr = webdriver.Chrome() #指定selenium进行自动化操作时选用谷歌浏览器
self.dr.get('https://book.douban.com/tag/%E5%B0%8F%E8%AF%B4/') #要打开的网页
def print_content(self):
total_book = self.dr.find_element_by_id('wrapper') #先定位到包含所有图书的div盒子中
books = total_book.find_elements_by_class_name('info') #找到已经定位到的div盒子里的每一个包含图书介绍的子div
i = 1
for book in books: #通过for循环依次把每一本图书的内容取出来
print (str(i)+ book.text + '
') #将爬取到的内容打印
i += 1
def quit(self):
self.dr.quit() #爬取数据完成后关闭浏览器
DouBan().print_content()
大家有没有看到,代码运行之后电脑自己打开了浏览器进入我们的目标页面,然后爬取完我们想要的数据之后又自己关闭了浏览器,很神奇有没有!超酷有没有!
怎么样,是不是觉得超级简单易懂?那还不赶紧pip install selenium 来自己试一试!
如果您python学习的过程中遇到难题,欢迎关注微信公众号【咕哒编程】,大家一起交流讨论解决!
网友评论