python3网络爬虫开发实战豆瓣_大牛程序员教你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://www.mzph.cn/news/262129.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决了界面上菜单项跑到其它AE控件后面的问题(java)

菜单项竟然跑到后面去了,搞了好多天,终于解决了 只要把这句代码放到main()的最前面就可以了 JPopupMenu.setDefaultLightWeightPopupEnabled(false); 转载于:https://www.cnblogs.com/bluemaplestudio/archive/2010/02/28/1675171.html

There is no public key available for the following key IDs: 3B4FE6ACC0B21F32

Ubuntu报错:There is no public key available for the following key IDs: 3B4FE6ACC0B21F32 解决办法:# apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32# apt-get update 转载于:https://blog.51cto.com/yangzhiming/17…

微软工程师测试题——未来

一,选择题(皆为单选): 1,以下谁是二进制思想的最早提出者? a,伏羲;b,姬昌;c,莱布尼茨;d,柏拉图。 答案:A 解释…

matlab利用霍夫,基于matlab的霍夫变换

霍夫变换(限量版)基于matlab的霍夫变换 一、简单介绍Hough变换是图像处理中从图像中识别几何形状的基本方法之一。Hough变换的基本原理在于利用点与线的对偶性,将原始图像空间的给定的曲线通过曲线表达形式变为参数空间的一个点。这样就把原始图像中给定曲线的检测问…

python网站用什么数据库_PyMySQL数据库的使用

前面我们学习了SQLite数据库的相关内容,我们也通过前面的内容学习到了数据库的相关操作,PyMySQL数据库的操作和前面的内容类似,但我们可以通过Navicat直接来查看数据库中的内容,实现数据可视化,前面我们已经完成了下载…

宏与内联(inline)的区别(转载)

先转载下人家总结的宏和普通函数调用的区别:(1)、宏只做简单的字符串替换,函数是参数传递,所以必然有参数类型检查(支持各种类型,而不是只有字符串)。(2)、宏不经计算而直接替换参数,函数调用则是将参数表达式求值再传…

C++_系列自学课程_第_12_课_结构体

1 #include <iostream>2 #include <string>3 4 using namespace std;5 6 struct CDAccount7 {8 double balance; //余额9 double rate; //利息10 int term; //存期11 };12 13 struct Date14 {15 int year;16 int month;17 int…

PHP盈亏问题,小升初数学必考经典应用题—盈亏问题!(附经典例题分析)

这种题目中往往有两种分配方案&#xff0c;每种分配方案的结果会出现多(盈)或少(亏)的情况&#xff0c;通常把这类问题&#xff0c;叫做盈亏问题(也叫做盈不足问题)。解答这类问题时&#xff0c;应该先将两种分配方案进行比较&#xff0c;求出由于每份数的变化所引起的余数的变…

javascript php 之间传递 中文 避免乱码

在javascript代码中用encodeURIComponent()函数处理中文字符串&#xff0c; JS代码&#xff1a; <mce:script type”text/javascript”><!-- string encodeURIComponent(string); location.href index.php?keyword’string; // --></mce:script> PHP代码…

web 服务器 内存 影响_高性能服务器架构思路「不仅是思路」

在服务器端程序开发领域&#xff0c;性能问题一直是备受关注的重点。业界有大量的框架、组件、类库都是以性能为卖点而广为人知。然而&#xff0c;服务器端程序在性能问题上应该有何种基本思路&#xff0c;这个却很少被这些项目的文档提及。本文正式希望介绍服务器端解决性能问…

JavaScript函数 this调用规则

不是我翻译的&#xff0c;但是觉得不错&#xff0c;为了分享&#xff0c;只好... JavaScript函数调用规则一 (1)全局函数调用&#xff1a; function makeArray( arg1, arg2 ){ return [this , arg1 , arg2 ]; } 这是一个最常用的定义函数方式。相信学习JavaScript的人对它…

100~200之间的素数(及其四个优化方案)

要求素数&#xff0c;首先我们要知道什么是素数&#xff0c;在解题的时候&#xff0c;不要急着去寻找方法解题&#xff0c;而是要先了解它的根本&#xff0c;才可以在遇到类似题的时候轻松面对解决质数(prime number)又称素数&#xff0c;有无限个。一个大于1的自然数&#xff…

Asp.net 请求中变量的保存方式

Session: 当前浏览器用户&#xff0c;在浏览器关闭后或者是指定时间后&#xff08;默认为20分钟&#xff09;失效 同时根据Session的存储方式&#xff0c;有不同的情况&#xff1a; InProc&#xff1a;该模式Session将会被保存在IIS进程中&#xff0c;如果IIS进程重启&#xff…

php项目安装器,php服务器环境安装及项目搭建

2安装运行环境及搭建项目2.1安装apache及测试1)安装apacheyum install httpd启动apachesystemctl start httpd.service查看运行状态systemctl status httpd.service2)编辑测试页面echo “xingming”>/var/www/html/index.html3)打开浏览器输入公网ip地址&#xff0c;结果如下…

单链表删除所有值为x的元素_线性表之单链表

单链表一种以链接方式存储的线性表&#xff0c;适用于频繁增删操作&#xff0c;存储空间不定的情形。单链表的一个存储结点包含两个域&#xff0c;数据域和指针域。数据域用于存储线性表的一个数据元素&#xff0c;指针域用于指示下一个结点开始的存储地址。链表第一个结点的地…

PHP自动测试框架Top 10

2019独角兽企业重金招聘Python工程师标准>>> 对于很多PHP开发新手来说&#xff0c;测试自己编写的代码是一个非常棘手的问题。如果出现问题&#xff0c;他们将不知道下一步该怎么做。花费很长的时间调试PHP代码是一个非常不明智的选择&#xff0c;最好的方法就是在编…

树莓派 设备信息 php,树莓派实现DDNS(PHP计划任务)

之前介绍了DNSPod动态IP解析更新程序&#xff0c;是Python实现的。下面介绍一个PHP实现的脚本&#xff0c;实现了同样的动态域名解析功能。header("Content-type: text/html; charsetutf8");class Dns{#Dnspod账户private $dnspod_user userexample.com;#Dnspod密码…

某公司数据恢复报告书

一、故障描述1、设备清单设备名称设备型号数量HP FC存储HP MSA20001450G SAS.硬盘82、故障描述整个存储空间由8块450GB SAS的硬盘组成&#xff0c;其中7块硬盘组成一个RAID5的阵列&#xff0c;剩余1块做成热备盘使用。由于RAID5阵列中出现2块硬盘损坏&#xff0c;而此时只有一块…

python写sql语句_简单的(笨的)用python以及SQL语句书写增删改查

班级列表ID 班级名称 删除 修改{% for row in class_list %}{{ row.id }} {{ row.title }} {# 删除数据库#}--- {# 修改数据库#}*** {% endfor %}

如何返回一个只读泛型集合

Private md_states As New List(Of String)Private md_states As New List(Of String) ReadOnly Property States() As System.Collections.ObjectModel.ReadOnlyCollection(Of String) Get Return Me.md_states.AsReadOnly End Get End Property 转载于:https://www.cnblogs.c…