首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

大牛程序员教你1天入门Python3 网络爬虫例子

在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材。其实我们可以通过python 来实现这样一个简单的爬虫功能,把我们想要的代码爬取到本地。网络爬虫,也叫网络蜘蛛(Web Spider)。它根据网页地址(URL)爬取网页内容,而网页地址(URL)就是我们在浏览器中输入的网站链接。比如:https://www.baidu.com/,它就是一个URL。

在讲解爬虫内容之前,我们需要先学习一项写爬虫的必备技能:审查元素(如果已掌握,可跳过此部分内容)。

(1). 审查元素

在浏览器的地址栏输入URL地址,在网页处右键单击,找到检查,如下图所示:(不同浏览器的叫法不同,Chrome浏览器叫做检查,Firefox浏览器叫做查看元素,但是功能都是相同的)

浏览器就是作为客户端从服务器端获取信息,然后将信息解析,并展示给我们的。我们可以在本地修改HTML信息,为网页"整容",但是我们修改的信息不会回传到服务器,服务器存储的HTML信息不会改变。刷新一下界面,页面还会回到原本的样子。这就跟人整容一样,我们能改变一些表面的东西,但是不能改变我们的基因。

(2) 简单实例

网络爬虫的第一步就是根据URL,获取网页的HTML信息。在Python3中,可以使用urllib.request和requests进行网页爬取。

urllib库是python内置的,无需我们额外安装,只要安装了Python就可以使用这个库。

requests库是第三方库,需要我们自己安装。

requests库强大好用,所以本文使用requests库获取网页的HTML信息。requests库的github地址:https://github.com/requests/requests

1 requests安装

在学习使用requests库之前,我们需要在电脑中安装好requests库。在cmd中,使用如下指令安装requests库:

pip install requests

easy_install requests

使用pip和easy_install都可以安装,二选一即可

(3)简单实例

安装好requests库之后,我们先来大体浏览一下requests库的基础方法:

requests库的开发者为我们提供了详细的中文教程,查询起来很方便。本文不会对其所有内容进行讲解,摘取其部分使用到的内容,进行实战说明。

# -*- coding:UTF-8 -*- import requests if __name__ == '__main__': target = 'http://gitbook.cn/' req = requests.get(url=target) print(req.text)

1. 小说下载

(1)实战背景

《笔趣看》是一个盗版小说网站,这里有很多起点中文网的小说,该网站小说的更新速度稍滞后于起点中文网正版小说的更新速度。并且该网站只支持在线浏览,不支持小说打包下载。因此,本次实战就是从该网站爬取并保存一本名为《一念永恒》的小说,该小说是耳根正在连载中的一部玄幻小说。PS:本实例仅为交流学习,支持耳根大大,请上起点中文网订阅。

2)小试牛刀

我们先看下《一念永恒》小说的第一章内容,URL:http://www.biqukan.com/1_1094/5403177.html

用已经学到的知识获取HTML信息试一试,编写代码如下:

# -*- coding:UTF-8 -*- import requests if __name__ == '__main__': target = 'http://www.biqukan.com/1_1094/5403177.html' req = requests.get(url=target) print(req.text)

可以看到,我们很轻松地获取了HTML信息。但是,很显然,很多信息是我们不想看到的,我们只想获得如右侧所示的正文内容,我们不关心那些看着眼晕的英文字母。如何把正文内容从这些众多的HTML信息中提取出来呢?这就是本小节实战的主要内容。

(4)Beautiful Soup

爬虫的第一步,获取整个网页的HTML信息,我们已经完成。接下来就是爬虫的第二步,解析HTML信息,提取我们感兴趣的内容。对于本小节的实战,我们感兴趣的内容就是文章的正文。提取的方法有很多,例如使用正则表达式、Xpath、Beautiful Soup等。对于初学者而言,最容易理解,并且使用简单的方法就是使用Beautiful Soup提取感兴趣内容。

Beautiful Soup的安装方法和requests一样,使用如下指令安装(也是二选一):

pip install beautifulsoup4

easy_install beautifulsoup4

一个强大的第三方库,都会有一个详细的官方文档。我们很幸运,Beautiful Soup也是有中文的官方文档。URL:http://beautifulsoup.readthedocs.io/zh_CN/latest/

同理,我会根据实战需求,讲解Beautiful Soup库的部分使用方法,更详细的内容,请查看官方文档。

下面小编在分享一个python 用json形式从豆瓣抓取电影的排行,电影名称与分数实例,代码如下:

from urllib.request import urlopen

import json

### 用json形式从豆瓣抓取电影的排行,通过审查元素找到看起来是json格式的链接

def get20Movie(url):

html = urlopen(url)

htmlJsonString = html.read()

jsonObj = json.loads(htmlJsonString.decode()) # decode()很关键

movieNameAndScores = []

for each in jsonObj.get('subjects'):

movieNameAndScores.append(each.get('title')+each.get('rate'))

# print(each.get('title')+each.get('rate'))

return movieNameAndScores

j = 0

while 1:

movieNameAndScores = get20Movie('https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start='+str(j))

for each in movieNameAndScores:

print(each)

j += 20

小编欢迎想学习Python的小伙伴一起留言探讨,如果想跟小编交流学习,请在私信里,回复 python 有惊喜哦!如果遇到python不懂的地方,也可以找小编。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180122A0042O00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券