Python网络爬虫实战,数据解析!

Python 网络爬虫入门与实战 网络爬虫(Web Crawler)是自动访问网络并提取信息的程序。它可以模拟人类用户在浏览器中的行为,访问网页、抓取数据并存储到本地或数据库中。网络爬虫在信息检索、数据挖掘、搜索引擎等领域有广泛应用。Scrapy 是一个强大的爬虫框架,支持异步处理和数据存储。它适合大型爬虫项目,可以高效抓取和解析数据。yield item通过本文的学习,您应该对 Python 网络爬虫有了全面的了解。从基础的 Requests 库到高级的 Scrapy 框架,再到实战案例,涵盖了网络爬虫的方方面面。 阅读详情

上一篇说完了如何爬取一个网页,以及爬取中可能遇到的几个问题。那么接下来我们就需要对已经爬取下来的网页进行解析,从中提取出我们想要的数据。

根据爬取下来的数据,我们需要写不同的解析方式,最常见的一般都是HTML数据,也就是网页的源码,还有一些可能是Json数据,Json数据是一种轻量级的数据交换格式,相对来说容易解析,它的格式如下。

Python资源共享群:626017123

{
    "name": "中国",
    "province": [{
        "name": "黑龙江",
        "cities": {
            "city": ["哈尔滨", "大庆"]
        }
    }, {
        "name": "广东",
        "cities": {
            "city": ["广州", "深圳", "珠海"]
        }
    }, {
        "name": "台湾",
        "cities": {
            "city": ["台北", "高雄"]
        }
    }, {
        "name": "新疆",
        "cities": {
            "city": ["乌鲁木齐"]
        }
    }]
}

上一篇说到的爬取携程加载不出来的那部分数据就是异步请求Json返回给我们的,对于这类数据,Python有着十分便捷的解析库,所以我们相对不用写多少代码。

但是对于爬取下来是一个HTML数据,其中标签结构可能十分复杂,而且不同HTML的结构可能存在差异,所以解析方式也需要看情况而定。

相对方便的解析方式有正则表达式,xPath和BeautifulSoup4库。

三者的运行速度相比当然是正则表达式最快,xPath其次,Bs4最慢了,因为Bs4是经过封装的库,相对于另外两个,无疑是重装坦克一般,但Bs4确实使用最简单的一个,而正则表达式是最麻烦的一个。

正则表达式几乎所有编程语言都支持,每一种语言的正则表达式都存在一点差异但大同小异。如果你是在设计一个复杂系统,就不要考虑正则表达式了,因为这种方法太过于不稳定,你永远不敢保证你写的正则规则是对应当前系统完全不会报错的。

xPath 是一门在XML文档中查找信息的语言。xPath可用来在XML文档中对元素和属性进行遍历。

关于正则表达式和xPath在之后的实战中再做详解,现在主要是掌握Bs4的使用。

我们首先需要下载Bs4的库。

pip install lxml
pip install beautifulsoup4

当我们爬取下来一整个网页的HTML之后,Bs4就可以根据标签的相对定位来找准你要爬取的数据了。

这个相对定位类似于如下:

body > div.banner > div > div.celeInfo-right.clearfix > div.movie-stats-container > div > div > span > span

可以理解把HTML页面当做洋葱一层一层剥开。

这种定位叫做selector,我们可以不用自己编写它,比较HTML结构可能比较复杂,很容易写错。

我们可以打开浏览器的控制台(F12),然后Elements里面找到我们想要爬取之后解析的内容,这时候你鼠标放上去的位置对应页面内容会变成蓝色让你来对比,如下图。

 

 

 

 

 

 

可以发现,这些dd标签里面就是当前页面所有的电影信息了。哪吒之魔童降世你可以理解为dd-1,巨鳄风暴可以当做dd-2,以此类推。

然后你把鼠标放在dd标签上右键,会有一个copy选项,里面有一个selector,就是将它的selector复制下来。

下面分别是哪吒之魔童降世和巨鳄风暴的selector,可以发现,只有最后的dd:nth-child不同。

#app > div > div.movies-panel > div.movies-list > dl > dd:nth-child(1)
#app > div > div.movies-panel > div.movies-list > dl > dd:nth-child(2)

有了这个规律,我们就可以很容易的一次性解析那种列表型网页了。

 

 

 

 

 

 

# -*- coding: utf-8 -*-
import os
import re
from bs4 import BeautifulSoup
import requests
# 请求头设置
header = {
    'Accept': '*/*;',
    'Connection': 'keep-alive',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Accept-Encoding': 'gzip, deflate, br',
    'Host': 'maoyan.com',
    'Referer': 'http://maoyan.com/',
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36'
}
data = requests.get('https://maoyan.com/films', headers=header)
soup = BeautifulSoup(data.text, 'lxml')
titles = soup.select('#app > div > div.movies-panel > div.movies-list > dl > dd ')
print(titles)

来仔细讲解一下上面这些代码。

request.get(url,headers)是昨天说过的了,headers就是请求头信息,里面包含了我们客户端的信息以及请求方式是Get还是Post等。

返回的data就是响应了,你可以直接print这个数据,但是这个响应体里面不止包含网页的HTML,还有这次请求的相关数据,比如响应码,200说明成功,404说明没有找到资源等。

data.text就是从响应体中拿到网页HTML代码了。

BeautifulSoup就是我们的主要解析对象,lxml是相应的解析方式。

通过调用BeautifulSoup的select选择器方法,来从之前传入的HTML中获取相应的标签。

这么一看其实Bs4还是很简单的,但这只是Bs4的基础应用了,对于我们普通解析一个网页已经足够用了,如果感兴趣可以去深入去了解一下,不过这个这么说也只是工具库,如果你不嫌麻烦可以自己解析。

看完代码,如果现在我要拿到这个页面的电影名称,这时候上面这个selector就不能用了,因为它不够精确,它只到了'

',而我们要精确到电影名称。

用这个selector。

 

 

 

 

 

 

#app > div > div.movies-panel > div.movies-list > dl > dd:nth-child(1) > div.channel-detail.movie-item-title > a

其它方式几乎都大同小异了。

以上是HTML的解析,我们爬取的数据有时还会是Json数据,这类数据相对来说十分规则,我倒是很希望目标数据会是Json格式。

比如上篇中的携程。

它的航班信息就是请求Json返回的。

 

 

 

 

 

 

Python中正则表达式的解析十分简单,你把它当做字典数据类型就可以了。

最开始你获得的Json是一串字符串,通过Python的Json.loads(jsonData)之后,返回的其实就是字典数据类型,直接操作就可以了。

 

 

 

 

 

 

import json
jsonData = '{
        "name":"gzj",
        "age":"23",
        "sex":"man",
        "mail":{
            "gmail":"antzuhl@gmail.com",
            "qmail":"1325200@qq.com"
            }
        }'
res = json.loads(jsonData)
print(res['mail']['qmail'])
什么是网络爬虫 又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。网络爬虫可以根据指定的规则,从互联网上下载网页、图片、视频等内容,并抽取其中的有用信息进行处理。网络爬虫的工作流程包括获取网页源代码、解析网页内容、存储数据等步骤。根据其目的和工作方式的不同,网络爬虫可以分为多种类型。常见的网络爬虫包括通用爬虫、聚焦爬虫、增量式爬虫等。 阅读详情

相关推荐

Python网络爬虫的设计与实现研究

摘要:随着互联网技术的快速发展,网络爬虫作为获取互联网信息的重要工具,其在数据分析、数据挖掘、自然语言处理等领域的应用越来越广泛。本文首先对网络爬虫的基本原理进行了介绍,然后详细阐述了基于Python的网络爬虫设计与实现过程,包括爬虫架构的选择、网页抓取、数据解析、数据存储等方面。URL管理器负责维护一个待爬取的URL队列,网页下载器负责从URL队列中取出URL并下载对应的网页内容,网页解析器负责对下载的网页内容进行解析和提取所需信息,数据输出器负责将提取的信息以指定格式输出。关键词:Python;

铭渊老黄 2568

Python网络爬虫实战(二)数据解析

上一篇说完了如何爬取一个网页,以及爬取中可能遇到的几个问题。那么接下来我们就需要对已经爬取下来的网页进行解析,从中提取出我们想要的数据。 根据爬取下来的数据,我们需要写不同的解析方式,最常见的一般都是HTML数据,也就是网页的源码,还有一些可能是Json数据,Json数据是一种轻量级的数据交换格式,相对来说容易解析,它的格式如下。 { "name": "中国", "pro...

Antz Uhl Kone 360

win11系统ping另一台电脑上VMware虚拟机的IP

我是用了两台电脑,所以刚才遇到一个问题就是两台电脑的IP 在同一局域网内ping不通。于是就找了很多资料,经过坚强的绝望后终于解决了。 下开始解决问题: VMWare提供了三种工作模式:bridged(桥接模式)、NAT(网络地址转换模式)和host-only(主机模式)。 1. bridged(桥接模式)   在这种模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立主机,它可以访问网内任何一台机器。在桥接模式下,你需要手工为虚拟系统配置IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚

qq_42817360的博客 3239

python爬虫(十五)selenium爬取猫眼和京东

selenium案例练习 爬取猫眼电影数据 页面需求 使用selenium爬取猫眼Top100中,电影每部电影的排名,电影名,主演,上映时间及评分。 页面分析 通过分析页面结构,选择合适的接入点。selenium直接进行页面检查就可以,不用再分析代码是否在源码中出现。 光标位于第一个电影处,点击右键,检查,定位到第一个电影的信息,我们可以把标签折叠,可以看到dd标签里存放了一个电影的所有数据,所有的dd标签里存放了本页面所有的电影,而dd标签都存放于dl标签内。那我们只需要找到dl标签,再从里面找到dd标

hwwaizs的博客 2001

模拟IC版图DRC实战:手把手教你搞定MIM电容天线错误和ESD.10g违例

本文深入解析模拟IC版图中的MIM电容天线错误和ESD.10g违例问题,提供从错误解码到实战修复的完整指南。通过电路图修改、版图优化和验证闭环等步骤,帮助工程师高效解决DRC错误,特别适用于ADC等精密模拟电路设计。文章还分享了高级排错技巧和预防性设计策略,大幅提升流片成功率。

weixin_27697385的博客 295

手把手教你用HarmBench数据集测试大模型安全性(含多模态案例)

本文详细介绍了如何使用HarmBench数据集测试大模型的安全性,包括文本和多模态越狱指令的实战案例。通过环境配置、数据集获取、测试流程及结果分析,帮助开发者全面评估和提升大模型的安全防护能力,特别关注多模态攻击的防御策略。

weixin_26642481的博客 329

28个python爬虫项目,看完这些你离爬虫高手就不远了

互联网的数据爆炸式的增长,而利用 Python 爬虫我们可以获取大量有价值的数据:

libaiup的博客 5184

【电脑技巧】CPU正常运行时间过长,怎么解决?

目录 问题描述 解决方案 1、问题描述 不少同志都遇到过这样的问题:按【Ctrl + alt + delete】打开任务管理器,切到“性能”选项卡下,发现自己电脑的CPU正常运行时间竟然为好几十天!很多人担心这会不会影响电脑的寿命?于是很想知道这是怎么回事,以及如何解决这个问题。 我在此解答一下,这是由于你的电脑开启了“快速启动”这一选项的缘故,只要把这一选项关闭,问题就解决了。 2、解决方案 怎样关闭“快速启动”呢?按照如下的步骤来即可。 顺便声明一下,笔者的电脑配置: 使用电脑:联想Yoga 14

橄榄树下的孩子 3万+

看完这28个python爬虫项目,你离爬虫高手就不远了,不够来找我

爬取—>解析—>存储。

Everly_的博客 5691

AnyLogic 8.8.3 最新版安装指南:从下载到配置的完整流程(附Java环境设置技巧)

本文提供了AnyLogic 8.8.3最新版从下载到配置的完整安装指南,重点解决了跨平台(Windows、macOS、Linux)部署中的常见问题。核心内容详细讲解了Java开发环境(JDK)的精准配置技巧,包括版本选择、系统环境变量设置与验证,确保为仿真建模工作奠定稳固基础。

efc1234567的博客 764

【近源攻击】badusb制作

BadUSB是利用伪造HID设备执行攻击载荷的一种攻击方式。HID(Human InterfaceDevice)设备通常指的就是键盘鼠标等与人交互的设备,用户插入BadUSB,就会自动执行预置在固件中的恶意代码。BadUsb插入后,会模拟键盘鼠标对电脑进行操作,通过这些操作打开电脑的命令终端,并执行一条命令,这条命令将从指定网址下载其他代码并于后台静默运行。这些代码功能包括:窃取信息、反弹shell、发送邮件等,从而实现控制目标机或者窃取信息的目的。

qinjilll的博客 2550

Python爬虫案例解析:五个实用案例及代码示例(学习爬虫看这一篇文章就够了)

导言: Python爬虫是一种强大的工具,可以帮助我们从网页中抓取数据,并进行各种处理和分析。在本篇博客中,我们将介绍五个实用的Python爬虫案例,并提供相应的代码示例和解析。通过这些案例,读者可以了解如何应用Python爬虫来解决不同的数据获取和处理问题,从而进一步提升爬虫技能。案例一:爬取天气数据代码解析: 在这个案例中,我们使用requests库发送HTTP请求获取天气数据,并将数据保存到CSV文件中。首先,我们发送GET请求获取天气数据的JSON响应。

m0_74942241的博客 9205

【原创】关于西门子S120 的电气图纸设计

我们首先要了解一下模块的基本信息:SINAMICS 功率模块 PM240-2 三相交流380-480V+10/-10% 47-63Hz;至此,我们选择的驱动系统配置的资料都已经查找完毕,接下来就是根据每个部件的功能接口和我们需要实现的功能画出接线连接图,这样关于伺服电机控制,硬件部分设计就完成了。2)FSA - FSC 型功率模块 PM240-2 的屏蔽连接板外形尺寸图,所有数据以毫米(英寸)为单位。1)FSA 型功率模块 PM240-2 的外形尺寸图,所有数据以毫米(英寸)为单位。

Qinmingyue13的博客 2640

数据爬取 mail_Python网络爬虫实战,数据解析!

上一篇说完了如何爬取一个网页,以及爬取中可能遇到的几个问题。那么接下来我们就需要对已经爬取下来的网页进行解析,从中提取出我们想要的数据。 根据爬取下来的数据,我们需要写不同的解析方式,最常见的一般都是HTML数据,也就是网页的源码,还有一些可能是Json数据,Json数据是一种轻量级的数据交换格式,相对来说容易解析,它的格式如下。Python资源共享群:626017123{ "name"...

weixin_35953704的博客 546

自学 ABAP 和自学 SAP 的差别

有朋友在我的 ABAP 学习教程里留言: > 自学SAP是不是都要搭建虚拟服务器,然后自己去官网下载新版本SAP就可以吗 对于初学者,我们要搞清楚 ABAP 和 SAP 的区别。 ABAP 是一门编程语言,SAP 首先是德国软件公司的名称,也代表这家公司开发的一系列软件。SAP 公司开发的软件,我们有时也称产品,其功能能满足客户一个或者多个领域的业务需求。这些不同领域,我们也称为不同的业务模块,比如 ERP,CRM,SRM,HR 等等。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 6864

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

从入门到实战:Python网络爬虫指南

网络爬虫(Web Crawler)是一种自动获取互联网信息的程序,它通过访问网页、提取数据并保存数据的方式来实现信息的获取。网络爬虫可用于从网站中收集数据、监视网站的变化、搜索引擎索引等多种应用。在本文中,我们介绍了Python网络爬虫的基础知识,包括网络爬虫的概念、Python在网络爬虫中的应用以及如何构建简单的网络爬虫。通过学习如何编写网络爬虫,您可以更好地利用互联网上的数据资源,加快信息收集的效率。

努力是为了站在万人之中,成为别人的光 8826

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Python 网络爬虫 全面解析

网络爬虫,也称为网页蜘蛛、网络机器人,是一种按照一定的规则,自动地抓取万维网信息的程序或脚本。它通过模拟浏览器的行为,向目标网站发送 HTTP 请求,获取网页的 HTML 源代码,然后从这些代码中提取出所需的数据,如文本、图片、链接等。

你猜我是谁? 2068

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Python 网络爬虫教程

网络爬虫是一种自动化程序,它模拟人类用户访问网页,自动获取网页上的内容。这些数据可以是文本、图片、视频等。爬虫的核心任务是发送 HTTP 请求,获取网页响应并解析内容。

JH_joker的博客 2362

一文带你掌握Python网络爬虫

Python 网络爬虫作为数据获取的有力工具,在当今数字化时代发挥着重要作用。通过本文,我们深入了解了爬虫的基本概念、工作流程、常用库以及实战应用。从简单的网页请求与解析,到复杂的反爬虫策略应对,每一个环节都蕴含着丰富的技术知识和实践技巧。在实际应用中,爬虫已经广泛渗透到各个领域,如市场调研、数据分析、舆情监测等。它帮助企业和研究人员快速获取大量有价值的数据,为决策提供了有力支持。但我们也不能忽视爬虫使用过程中的法律和道德问题,遵守 Robots 协议、保护数据隐私和合法使用数据是我们必须坚守的原则。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 4666

网络爬虫解析

网络爬虫(也称为网页蜘蛛、网络机器人)是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。网络爬虫可以用于从网站提取数据,例如监测社交媒体平台上的活动,或者从网上收集新闻和文章。它们也可以用于搜索引擎,如Google和Bing,来抓取和索引网页,以便在用户进行搜索时提供结果。URL通常由多个部分组成,包括协议类型(如HTTP、HTTPS)、主机名(域名或IP地址)、路径(资源在主机上的位置)以及可选的查询参数(用于传递额外的信息)。通过URL,用户可以方便地访问和定位到特定的网络资源。

2301_82032652的博客 2635

Python网络爬虫从入门到实战

requests库的本质就是封装了urllib3模块,它可以模拟浏览器的请求,编写过程更接近正常URL的访问过程。支持URL数据自动编码;支持HTTP连接保持和连接池;支持使用Cookie保持会话;支持文件分块上传;支持自动确定相应内容的编码;支持连接超时处理和流数据下载。通过requests库获取HTML页面内容后,需要进一步解析HTML格式,提取其中的有用数据。beautifulsoup4库是一个可以解析HTML或者XML文件的Python库,它具有以下三个特点。

yoona333的博客 2932

Python网络爬虫技术

Python网络爬虫作为一种强大的数据获取工具,在数据分析、信息检索、搜索引擎优化等领域发挥着重要作用。然而,在使用爬虫时,我们必须遵守相关法律法规和网站的访问政策,确保数据的合法性和隐私保护。同时,随着技术的不断发展,我们也应积极探索和创新爬虫技术的新应用和新方法。

jun778895的博客 3954

《Python 网络爬虫》

本文介绍了 Python 网络爬虫的基本概念、技术原理、常用工具以及实战案例,希望能够帮助读者快速掌握 Python 网络爬虫技术。在实际应用中,需要根据具体的需求选择合适的工具和方法,并注意遵守法律法规和网站的使用条款,避免对网站造成过大的负担和影响。Scrapy 是一个功能强大的 Python 爬虫框架,它提供了一套完整的爬虫开发工具,包括请求发送、网页解析、数据存储等。网络爬虫,又称为网页蜘蛛、网络机器人,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。(一)爬取新闻网站数据。

weixin_47266126的博客 1709

浅谈 Python 网络爬虫的那些事

在大数据、人工智能应用越来越普遍的今天,Python 可以说是当下世界上热门、应用广泛的编程语言之一,在人工智能、爬虫、数据分析、游戏、自动化运维等各个方面,无处不见其身影。随着大数据时代的来临,数据的收集与统计占据了重要地位,而数据的收集工作在很大程度上需要通过网络爬虫来爬取,所以网络爬虫技术变得十分重要。

黛琳ghz的博客,期待你的关注。 6833

python 3网络爬虫开发实战这本书怎么样?_《python网络爬虫开发实战》

在互联网时代,强大的爬虫技术造就了很多伟大的搜索引擎公司,让人类的记忆搜索能力得到巨大的延展。今天在移动互联网时代,爬虫技术仍然是支撑一些信息融合应用如今日头条的关键技术。但是,今天爬虫技术面临着更大的挑战。与互联网的共享机制不同,很多资源只有在登录之后才能访问,还采取了各种反爬虫措施,这就让爬虫不那么容易访问这些资源。无论是产品还是研究,都需要大量的优质数据来让机器更加智能。因此,在这个时代,大量的从业者急需一本全面介绍爬虫技术的书。

2501_90252633的博客 2160

Python网络爬虫:深入数据的海洋

Scrapy是一个强大的爬虫框架,提供了许多功能,如自动处理请求、解析响应、存储数据等。使用Scrapy可以快速构建复杂的爬虫项目。然后在生成的爬虫文件中编写爬取逻辑。网络爬虫是一个强大的工具,它可以帮助我们从海量的网络数据中提取有价值的信息。通过Python,我们可以快速上手并开发出功能强大的爬虫程序。但同时,我们也必须意识到,技术的使用应当遵循法律和道德的约束,以确保网络环境的健康和可持续发展。这篇文章只是一个起点,网络爬虫的世界广阔无垠,等待着你去探索和发现。

ciweic的博客 1432
上一篇: 如何使用 python 接入虹软 ArcFace SDK!
下一篇: scrapy,redis分布式爬取猫眼电影!
普通网友
博客等级 码龄7年 438粉丝 263原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值