代码编织梦想

用python从网页爬取数据,网上相关文章很多,但能让零基础初学者轻松上手的却很少。可能是有的作者觉得有些知识点太简单不值得花费精力讲,结果是难者不会会者不难,初学者常常因此而蒙圈。本人也是小白,刚摸索着爬了两个简单的网页数据,经历了初学者易犯的各种糊涂,特总结分享一下,希望能对小白们有用。
img

1、本文代码环境:python3.7,requests模块、BeautifulSoup解析库

python爬网络数据,方法很多。不同的python版本、不同的模块、库,对应代码都不同。所以,在看他人代码时,需要搞清代码环境所用的版本和使用的模块库等信息。因为如果环境不同,相同的代码也可能没用。初学者往往看到一篇文章讲的代码,复制过来就用,结果就是各种错误,这就是因为环境不同造成的。

没有模块的,pip安装一下就好。安装方法:点击电脑左下角开始——输入cmd回车,弹出cmd.exe界面——在界面上输入pip install requests回车,稍后,提示安装成功即完成了requests模块的安装。BeautifulSoup解析库是属于bs4模块的一个功能块,所以,用pip安装时,要安装pip install bs4。

2、爬虫4部曲:发出请求——获得网页——解析内容——保存内容

建好了代码环境,就可以开始爬数据了,无论什么代码环境,爬虫核心都是这4步。对新手来说,每一步都不简单,我们通过一个简单的爬取一篇小说代码,来看看到底是怎么爬数据的。

本文下面Python构建的项目都有详细的配套教程以及源码,都已经打包好上传到百度云了,链接在文章结尾处!

扫码此处领取大家自行获取即可~~~

3、爬取网络小说

在这里插入图片描述

3-1 拟爬取的网络小说截图

如图3-1,我们试着把这篇小说爬下来保存为txt文件,按照爬虫4部曲,我们逐步来看:

1)、发出请求

用代码向网络发出请求,请求访问某个网址,首先我们得在代码中给出具体的网址信息,比如上面截图的网址是: https://www.biqiuge.com/book/4772/2940354.html

那这个网址是怎么得到的呢,常规方法是通过浏览器的开发者工具,我是用的360浏览器,点击右上角的工具菜单,点击开发者工具即可,打开后的界面如下图3-2:

img

图3-2 开发者工具窗口

顶部菜单选择Network,中间圆圈选择Preview,通过选择左侧红色方框内的不同选项,观察Preview下部的内容,当能看到我们想要的文字时人(如图3-3),就说明找到了。

img

图3-3 箭头指示的就是准备爬取的数据

这时点击Preview左侧的Header面板,得到下图3-4中的url就是我们要找的网址。复制后,粘贴到代码里就能发出请求了。

img
图3-4 找到请求的网址

有细心的会看到,这个网址和我们平常浏览网页时地址栏里的网址一样啊,还用这么麻烦?
在这里插入图片描述
3-5 浏览器地址栏网址

这两个网址确实是一样的,是不用这么麻烦,直接从地址栏复制就可以。但很多时候,我们要爬取的网页数据并不在浏览器地址栏的那个网址里,这个时候就需要通过上面的那个开发者工具方法去找。

有了网址,发出请求的代码为:

url = "https://www.biqiuge.com/book/4772/2940354.html"     #   要爬取数据的网址
response = requests.get(url)       #发出访问请求,获得对应网页

访问请求的反馈结果放在response里了,这时我们用print(response)看看这个结果到底是什么?运行结果为:<Response [200]>

这是个什么鬼?怎么不是我们想要的网页内容呢?解释一下:

运行结果的意思是:响应状态为成功。可以放心写后面的代码了。如果出现数字404,就是没找到页面的意思,响应不成功。响应结果还需要解析才能得到网页内容。

2)、获得网页

上面说了,已经请求访问并响应成功了,接下来就是如何获得具体网页内容了。

soup = BeautifulSoup(response.content, 'lxml')     # 将获得的网页内容解析写入soup备用

我们用print(soup)看一下结果,就会得到下图3-6的结果:

img

3-6 代码得到的网页内容

内容与前面在Preview里看到的一样,说明已经成功获得了网页内容。

3)、解析网页内容,获得数据

所有要爬取的数据,都在上面的soup结果里,但还有更多是我们不需要的数据。所以接下来第3步就是对上面的结果内容进行操作,以获得我们想要的内容。

1)根据目标,我们首先要获得小说的标题和章节标题

在开发者工具里,分析网页内容,发现我们的目标之一小说和章节的标题分别位于下图所示位置:
img
图3-7 找到标题所处位置

A、小说标题“圣墟”在下面两个位置都出现过,写解析代码就可以了:

<a href="/book/4772/">圣墟</a>
<a href='https://www.biqiuge.com/book/4772/' target='_blank' title="圣墟">圣墟</a>

很明显第一个相对比简单点,所以,我们通过解析第一个位置内容来提取出标题“圣墟”

t1 = soup.find('a', href="/book/4772/"').get_text()

代码解析: 上面两处标题都位于<a,…/a>之间,所以“a”就是我们要用的第一个参数,由于有a参数的代码还有很多,为了精准定位就是这个位置的a,我们发现属性href的值不同而且貌似是独一无二的,所以将其作为关键字放进代码里,就得到了此处的这段代码。然后用.get_text()将这段代码里的文字给爬取出来,就得到了我们最终想要的小说标题——“圣墟”。上面的代码如果将href的参数值改为:’ https://www.biqiuge.com/book/4772/',也能得到相同的结果

B、章节标题在网页代码中也出现过多次,但是我们只需找到一处解析得到即可,根据上面的经验,我们选最简单的一处为:

<h1>第一章 沙漠中的彼岸花</h1>

编写代码:

t2 = soup.find('h1').get_text()

2)获得小说内容

继续分析网页代码,发现小说内容的位置为:


大漠孤烟直......

说明小说内容位于<div …/div >之间,所以将div作为第一个参数,由于div出现了很多次,所以我们需要继续用此处独有的参数作为关键字,我们将id=“content” class="showtxt"同时作为参数放到代码里,这样代码就为:

tt = soup.find('div', id="content", class="showtxt").get_text()

此时,由于class在python里代表“类”,为敏感词,作为关键字放在代码里容易混淆,所以我们将敏感词作为关键字时,需要在其后面加一个下划线,将代码class="showtxt"改为:class_=“showtxt”。运行后,小说内容就已经在tt里了。我们可以通过print(tt)看到效果。

4)、保存内容

虽然小说标题、内容都已经爬取到了,但到哪里看呢,我们不可能每次都用python用print()运行后看。我们可以将刚才爬取到的标题、内容,写入到一个txt文件里。这就用到os模块了。


此时运行程序,就能在e盘发现已新生成了文件“小说.txt文件",打开,发现,所有想要的内容已经写入到文件里了如图3-8。但是小说内容没有换行,阅读起来不方便,且前面有个多余的app2()。

img

图3-8 爬取的效果

为了达到更好的效果,我们将代码:

tt = soup.find('div', id="content", class="showtxt").get_text()

优化为:

tt = soup.find('div', id="content", class_="showtxt").text.replace(' ','\n').replace('app2();','\n')

即将app2()和空格符都替换为换行符。运行后得到效果为:

img

图3-9 优化后最终的爬取结果

至此,一个简单的爬取就完成了。

其实,该网址内容完全可以直接复制就能得到,本文之所以还大费周章进行爬取,不过是借用这个简单的静态网页,体验一下爬虫4步骤的流程,为后续批量爬取网页中的小说、图片以及爬取动态网页数据做基础。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_74942241/article/details/130359268

适合初学者的python爬虫代码实现-爱代码爱编程

这里提供一份简单的Python爬虫代码,用于爬取某个网站上的新闻标题和链接: ```python import requests from bs4 import BeautifulSoup # 设置请求头,模拟浏览器访问 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64

简单的爬虫代码-爱代码爱编程

import requests import re import csv import codecs urls = [] urls.append("https://y.qq.com/") urls.append("https://www.kugou.com/") urls.append("https://music.163.com/") urls.ap

python爬虫教程(非常详细)从零基础入门到精通,看完这一篇就够了-爱代码爱编程

对于绝大多数想要学习Python的朋友而言,爬虫绝对是学习Python的最好的骑手和入门方式。 我当时选择Python学习,也是瞄准了Python爬虫,因为爬虫思维模式固定,编程模式也相对简单,一般在细节处理上积累一些经验

7个经典python爬虫案例代码分享-爱代码爱编程

本次的7个python爬虫小案例涉及到了re正则、xpath、beautiful soup、selenium等知识点,非常适合刚入门python爬虫的小伙伴参考学习。注:若涉及到版权或隐私问题,请及时联系我删除即可。 1.

python爬虫完整代码,一人一份,随便拿~-爱代码爱编程

对于新手做Python爬虫来说是有点难处的,前期练习的时候可以直接套用模板,这样省时省力还很方便。 使用Python爬取某网站的相关数据,并保存到同目录下Excel。 直接上代码: import re import u

python数据爬虫教程(非常详细)从零基础入门到精通,看完这一篇就够了-爱代码爱编程

一、Scrapy Scrapy 是用 Python 实现的一个为了爬取网站数据、提取结构性数据而编写的应用框架。 Scrapy 常应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。 通常我们可以很简单的通过Scr

python爬虫入门教程(非常详细),全网最细的python爬虫教程-爱代码爱编程

一、基础入门 1.1什么是爬虫 爬虫(spider,又网络爬虫),是指向网站/网络发起请求,获取资源后分析并提取有用数据的程序。 从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HTML代码/JSON

简单的爬虫程序(详解)-爱代码爱编程

目录 扒网页  urllib的基本使用  requset.urlopen(url,data,timeout) response.read() response.getcode() response.geturl() response.info() request对象的使用 发送请求/响应header头的含义:   urllib发送g

分享41个python爬虫源代码总有一个是你想要的_爬虫代码-爱代码爱编程

分享41个Python爬虫源代码总有一个是你想要的 下载链接:https://pan.baidu.com/s/1nDDv5DrYPylFFF-hke2kFg?pwd=8888  提取码:8888 项目名称 Amazon商品引流的 python 爬虫 CSDN博客阅读量提升脚本,基于python刷阅读量,简单可用 feapder是一款上手简单,功能

爬虫实战|手把手教你用python爬虫(附详细源码)_爬虫代码怎么运行-爱代码爱编程

什么是爬虫? 实践来源于理论,做爬虫前肯定要先了解相关的规则和原理,要知道互联网可不是法外之地,你一顿爬虫骚操作搞不好哪天就…  首先,咱先看下爬虫的定义:网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。一句话概括就是网上信息搬运工。 我们再来看下爬虫应

使用群晖docker将小爱音箱接入chatgpt-爱代码爱编程

文章目录 开源项目地址获取设备did,设备hardware配置文件分享上传配置文件群晖后台启动服务检查服务状态,测试 开源项目地址 https://github.com/yihong0618/xia

python中__call__属性的使用指南详细解析-爱代码爱编程

概要 在Python中,类可以具有许多特殊方法,以控制其行为。其中之一是__call__方法,它使一个类的实例可以像函数一样被调用。本文将深入探讨__call__方法的用途、示例和实际应用。 __call__方法的基本用法 __call__方法可以将一个类的实例作为函数来调用。要使用__call__方法,需要在类中定义它,并在实例

逻辑控制使用-爱代码爱编程

文章目录 1. 概述2. 顺序结构3. 分支结构3.1 if 语句3.2 switch 语句 4. 循环结构4.1 while 循环4.2 for 循环4.3 do while 循环 5. brea

模型参数访问-爱代码爱编程

文章目录 前言某一层的参数目标参数一次性访问所有参数嵌套块收集参数 前言 在选择了架构并设置了超参数后,进入训练阶段。此时,我们的目标就是找到使损失函数最小化的模型参数。有时,我们希望提取参数,以便