Python 网络爬虫入门详解

五分钟学会Python网络爬虫 但不管怎样,爬虫技术是无罪的,还是值得我们开发人员去学习了解一下的。在学习之前,我们还是要先了解一下相关概念。 什么是爬虫 网络爬虫:又被称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。 大数据时代,要进行数据分析,首先要有数据源,可数据源从哪里来,花钱买,没预算,只能从其它网站就行抓取。 细分下来,业内分为两类:爬虫和反爬虫。 反爬虫:顾名思义,就是防止你来我网站或APP上做爬虫的。 爬虫工程师和反爬虫工程师是一对相爱相杀的小伙伴,经常因为对方要加班写代码, 阅读详情

什么是网络爬虫

网络爬虫又称网络蜘蛛,是指按照某种规则在网络上爬取所需内容的脚本程序。众所周知,每个网页通常包含其他网页的入口,网络爬虫则通过一个网址依次进入其他网址获取所需内容。

优先申明:我们使用的python编译环境为PyCharm

一、首先一个网络爬虫的组成结构:

  • 爬虫调度程序(程序的入口,用于启动整个程序)
  • url管理器(用于管理未爬取得url及已经爬取过的url)
  • 网页下载器(用于下载网页内容用于分析)
  • 网页解析器(用于解析下载的网页,获取新的url和所需内容)
  • 网页输出器(用于把获取到的内容以文件的形式输出)

二、编写网络爬虫

(1)准备所需库

我们需要准备一款名为BeautifulSoup(网页解析)的开源库,用于对下载的网页进行解析,我们是用的是PyCharm编译环境所以可以直接下载该开源库。

步骤如下:

选择File->Settings

打开Project:PythonProject下的Project interpreter

点击加号添加新的库

输入bs4选择bs4点击Install Packge进行下载

(2)编写爬虫调度程序

这里的bike\_spider是项目名称引入的四个类分别对应下面的四段代码url管理器,url下载器,url解析器,url输出器。
# 爬虫调度程序
from bike_spider import url_manager, html_downloader, html_parser, html_outputer


# 爬虫初始化
class SpiderMain(object):
    def __init__(self):
        self.urls = url_manager.UrlManager()
        self.downloader = html_downloader.HtmlDownloader()
        self.parser = html_parser.HtmlParser()
        self.outputer = html_outputer.HtmlOutputer()

    def craw(self, my_root_url):
        count = 1
        self.urls.add_new_url(my_root_url)
        while self.urls.has_new_url():
            try:
                new_url = self.urls.get_new_url()
                print("craw %d : %s" % (count, new_url))
                # 下载网页
                html_cont = self.downloader.download(new_url)
                # 解析网页
                new_urls, new_data = self.parser.parse(new_url, html_cont)
                self.urls.add_new_urls(new_urls)
                # 网页输出器收集数据
                self.outputer.collect_data(new_data)
                if count == 10:
                    break
                count += 1
            except:
                print("craw failed")

        self.outputer.output_html()


if __name__ == "__main__":
    root_url = "http://baike.baidu.com/item/Python/407313"
    obj_spider = SpiderMain()
    obj_spider.craw(root_url)

(3)编写url管理器

我们把已经爬取过的url和未爬取的url分开存放以便我们不会重复爬取某些已经爬取过的网页。

# url管理器
class UrlManager(object):
    def __init__(self):
        self.new_urls = set()
        self.old_urls = set()

    def add_new_url(self, url):
        if url is None:
            return
        if url not in self.new_urls and url not in self.old_urls:
            self.new_urls.add(url)

    def add_new_urls(self, urls):
        if urls is None or len(urls) == 0:
            return
        for url in urls:
            self.new_urls.add(url)

    def get_new_url(self):
        # pop方法会帮我们获取一个url并且移除它
        new_url = self.new_urls.pop()
        self.old_urls.add(new_url)
        return new_url

    def has_new_url(self):
        return len(self.new_urls) != 0

(4)编写网页下载器

通过网络请求来下载页面

# 网页下载器
import urllib.request


class HtmlDownloader(object):

    def download(self, url):
        if url is None:
            return None
        response = urllib.request.urlopen(url)
        # code不为200则请求失败
        if response.getcode() != 200:
            return None
        return response.read()

(5)编写网页解析器

对网页进行解析时我们需要知道我们要查询的内容都有哪些特征,我们可以打开一个网页点击右键审查元素来了解我们所查内容的共同之处。

# 网页解析器
import re
from bs4 import BeautifulSoup
from urllib.parse import urljoin


class HtmlParser(object):

    def parse(self, page_url, html_cont):
        if page_url is None or html_cont is None:
            return
        soup = BeautifulSoup(html_cont, "html.parser", from_encoding="utf-8")
        new_urls = self._get_new_urls(page_url, soup)
        new_data = self._get_new_data(page_url, soup)
        return new_urls, new_data

    def _get_new_data(self, page_url, soup):
        res_data = {"url": page_url}
        # 获取标题
        title_node = soup.find("dd", class_="lemmaWgt-lemmaTitle-title").find("h1")
        res_data["title"] = title_node.get_text()
        summary_node = soup.find("div", class_="lemma-summary")
        res_data["summary"] = summary_node.get_text()
        return res_data

    def _get_new_urls(self, page_url, soup):
        new_urls = set()
        # 查找出所有符合下列条件的url
        links = soup.find_all("a", href=re.compile(r"/item/"))
        for link in links:
            new_url = link['href']
            # 获取到的url不完整,学要拼接
            new_full_url = urljoin(page_url, new_url)
            new_urls.add(new_full_url)
        return new_urls

(6)编写网页输出器

输出的格式有很多种,我们选择以html的形式输出,这样我们可以的到一个html页面。

# 网页输出器
class HtmlOutputer(object):

    def __init__(self):
        self.datas = []

    def collect_data(self, data):
        if data is None:
            return
        self.datas.append(data)

    # 我们以html表格形式进行输出
    def output_html(self):
        fout = open("output.html", "w", encoding='utf-8')
        fout.write("<html>")
        fout.write("<meta charset='utf-8'>")
        fout.write("<body>")
        # 以表格输出
        fout.write("<table>")
        for data in self.datas:
            # 一行
            fout.write("<tr>")
            # 每个单元行的内容
            fout.write("<td>%s</td>" % data["url"])
            fout.write("<td>%s</td>" % data["title"])
            fout.write("<td>%s</td>" % data["summary"])
            fout.write("</tr>")
        fout.write("</table>")
        fout.write("</body>")
        fout.write("</html>")
        # 输出完毕后一定要关闭输出器
        fout.close()

写在末尾

注意:网页经常发生变化,我们需要根据网页的变化动态修改我们的代码来获得我们所需要的内容。

这只是一个简单的网络爬虫,如果需要完善其功能我们需要考虑更多问题。

爬虫入门后可以看一下爬虫如何模拟登陆Python爬虫模拟登陆

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,Python自动化测试学习等教程。带你从零基础系统性的学好Python!

👉[[优快云大礼包:《python安装包&全套学习资料》免费分享]](安全链接,放心点击)

在这里插入图片描述

一、Python大礼包

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、 Python电子书

在这里插入图片描述

三、入门学习视频

四、 Python爬虫秘笈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

五、 数据分析全套资源

在这里插入图片描述

六、python副业兼职与全职路线

在这里插入图片描述
上述这份完整版的Python全套学习资料已经上传优快云官方,如果需要可以微信扫描下方优快云官方认证二维码 即可领取

👉[[优快云大礼包:《python安装包&全套学习资料》免费分享]](安全链接,放心点击)

python爬虫入门教程(非常详细) 爬虫指的是一种自动化程序,能够模拟人类在互联网上的浏览行为,自动从互联网上抓取、预处理并保存所需要的信息。爬虫运行的过程一般是先制定规则(如指定要抓取的网址、要抓取的信息的类型等),紧接着获取该网址的HTML源代码,根据规则对源代码进行解析和抽取,最后进行处理和保存。爬虫在实际应用中广泛使用,如搜索引擎、大数据分析、交易数据采集等领域,都需要用到爬虫技术来实现信息的定向采集和处理。 阅读详情

相关推荐

1.网络爬虫概述

一、爬虫是什么? 二、爬虫可以做什么? 三、爬虫开发中有哪些技术?

qq_40407729的博客 5390

什么是网络爬虫?认识网络爬虫

网络爬虫 ( Web Crawler) 又称网络蜘蛛、网络机器人它是一种按照一定规则,自动浏览万维网的程序或脚本。通俗地讲,网络爬虫就是一个模拟真人浏览万维网行为的程序这个程序可以代替真人自动请求万维网,并接收从万维网返回的数据。与真人浏览万维网相比,网络爬虫能够浏览的信息量更大,效率也更高。其主要功能是按照一定的规则,自动地抓取互联网上的信息,并将这些信息存储在本地或者数据库中,以供后续的数据处理和分析。网络爬虫通常被用于搜索引擎、数据挖掘、信息监控等领域。

qq_74350135的博客 7649

Python网络爬虫入门指南

很高兴看到你对网络爬虫和Python的介绍。网络爬虫的确是一个强大且有趣的技术,而Python作为一种简单易学且功能丰富的编程语言,非常适合用于编写网络爬虫。   在本文中,我们将深入探讨Python网络爬虫的基本原理,介绍常用的工具和库,以及通过实战案例来帮助读者入门这个领域。我们将重点介绍如何发送HTTP请求、解析HTML页面、提取所需信息等基本技术,同时也会涉及一些高级的爬虫技术和注意事项。

不迁怒,不贰过。小知识,大智慧。 1998

python爬虫详解

python爬虫简介 1、基本概念 1.1、什么是爬虫 网络爬虫,是一种按照一定规则,自动抓取互联网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。例如:传统的通用搜索引擎AltaVista,Yahoo!和Google等,作为一个辅助人们检索信息的工具也存在着一定的局限性,通用搜索引擎的目标是尽可能大的网络覆盖率,返回的结果包含大量用户不关心的网页,为了解决上述问题,定..

小仙儿 6万+

python网络爬虫从入门到实践第2版pdf-Python网络爬虫从入门到实践 第2版

前言第1章 网络爬虫入门11.1 为什么要学网络爬虫21.1.1 网络爬虫能带来什么好处21.1.2 能从网络上爬取什么数据31.1.3 应不应该学爬虫31.2 网络爬虫是否合法31.2.1 Robots协议41.2.2 网络爬虫的约束51.3 网络爬虫的基本议题61.3.1 Python爬虫的流程71.3.2 三个流程的技术实现7第2章 编写第一个网络爬虫92.1 搭建...

weixin_39683163的博客 3493

Python 网络爬虫入门全知道

Python 网络爬虫入门全知道

安年的小小博客有大大的梦想 2742

【好书推荐3】Python网络爬虫入门到实战

本书介绍了Python3网络爬虫的常见技术。首先介绍了网页的基础知识,然后介绍了urllib、Requests请求库以及XPath、Beautiful Soup等解析库,接着介绍了selenium对动态网站的爬取和Scrapy爬虫框架,最后介绍了Linux基础,便于读者自主部署编写好的爬虫脚本。本书所有代码和相关素材可以到GitHub下载获取,地址为https://github.com/sfvsfv/Crawer。本书主要面向对网络爬虫感兴趣的初学者。杨涵文。

定期分享我的发现和想法,感谢你的陪伴和支持 7918

Python网络爬虫学习从入门到精通教程

本文介绍了Python网络爬虫的基础和进阶技术。基础部分讲解了爬虫概念、工作原理和法律道德,详细演示了requests库发送HTTP请求和BeautifulSoup解析HTML的方法。进阶部分包括Scrapy框架构建大规模爬虫、Selenium处理动态加载内容,以及直接调用API接口获取结构化数据。教程提供了大量代码示例,涵盖数据提取、分页处理、请求头设置等实用技巧,适合从入门到精通的Python爬虫学习者。

胡茬大叔的博客 1035

【愚公系列】《Python网络爬虫从入门到精通》001-初识网络爬虫

随着互联网的快速发展,数据的获取与处理变得愈发重要。在这个信息爆炸的时代,如何有效地收集和利用网络上的海量数据,成为了各行业面临的一大挑战。网络爬虫,作为一种自动化获取网页信息的技术,正逐渐成为数据分析、市场研究、竞争对手监控等领域不可或缺的工具。本文将带领读者初步了解网络爬虫的基本概念、工作原理以及常见应用场景。我们将探讨爬虫的构建过程,包括如何发送请求、解析网页、存储数据等关键步骤。同时,还会涉及一些爬虫开发中的注意事项,如如何遵循网站的robots.txt协议、避免被封禁等。

愚公智库 12万+

Python 网络爬虫学习路线:从入门到精通

学习 Python 网络爬虫需要一步步地积累知识和实践经验。从基本的 HTTP 请求和 HTML 解析开始,逐步深入到抓包分析、爬虫框架和分布式爬虫。通过掌握这些技能,你可以成为一名高效的网络爬虫开发者。希望这篇文章能够为你提供一个清晰的学习路线,帮助你在 Python 网络爬虫的世界中找到自己的位置。

single_ffish的博客 5129

Python 网络爬虫入门与实战

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

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 2213

『哈士奇赠书33期』- 『Python网络爬虫入门到实战』

『哈士奇赠书33期』- 『Python网络爬虫入门到实战』

易编橙 · 终身成长社群,相遇已是上上签! 1万+

python网络爬虫从入门到精通吕云翔pdf_Python 网络爬虫从入门到精通

第1章 Python与网络爬虫11.1 Python语言11.1.1 什么是Python11.1.2 Python的应用现状21.2 Python的安装与开发环境配置31.2.1 在Windows上安装31.2.2 在Ubuntu和Mac OS上安装41.2.3 PyCharm的使用51.2.4 Jupyter Notebook91.3 Python基本语法121.3.1 H...

weixin_39591916的博客 2641

Python网络爬虫入门

Python网络爬虫入门 网络爬虫(web crawler),也叫网络蜘蛛(Web Spider)、网络机器人(Internet Bot)。简单地说,抓取万维网(World Wide Web)上所需要的数据的程序就叫网络爬虫。 网络爬虫常见分类: 通用网络爬虫(General Purpose Web Crawler)又称全网爬虫(Scalable Web Crawler)爬行对象从一些种子 URL 扩充到整个 Web,主要为门户站点搜索引擎和大型 Web 服务提供商采集数据。这类网络爬虫的爬行范围

cnds123的专栏 3132

《Python网络爬虫从入门到实践 第2版》第1章 网络爬虫入门

第1章 网络爬虫入门 网络爬虫就是自动地从互联网上获取程序。想必你听说过这个词汇,但是又不太了解,会觉得掌握网络爬虫还是要花一些工夫的,因此这个门槛让你有点望而却步。 我常常觉得计算机和互联网的发明给人类带来了如此大的方便,让人们不用阅读说明书就能知道如何上手,但是偏偏编程的道路又是如此艰辛。因此,本书尽可能地做到浅显易懂,希望能够将网络爬虫学习的门槛降低,大家都能享受到使用网络爬虫编程的快乐...

jxgy01的博客 615

FFmpeg实战:5分钟搞定m3u8视频下载与ts文件合并(附完整命令)

本文详细介绍了如何使用FFmpeg快速下载m3u8视频并合并ts文件为mp4格式。通过简洁的命令行操作,读者可以轻松完成视频处理任务,包括环境准备、链接获取、下载合并及性能优化等实用技巧,特别适合需要高效处理流媒体内容的用户。

weixin_30836759的博客 221

python网络爬虫从入门到精通吕云翔_Python 网络爬虫从入门到精通

《Python 网络爬虫从入门到精通》的主旨是介绍如何结合Python进行网络爬虫程序的开发,从Python语言的基本特性入手,详细介绍了Python网络爬虫开发的各个方面,涉及HTTP、HTML、JavaScript、正则表达式、自然语言处理、数据科学等不同领域的内容。全书共15章,包括Python基础知识、网站分析、网页解析、Python文件读写、Python与数据库、AJAX技术、模拟登录、...

weixin_39921689的博客 578

RiscV运行zephyr和Linux的方法

riscv基金会搞了一个网站,用于介绍如何使用riscv指令集进行开发。 对于运行zephyr和linux以及Qemu有非常大的帮助。 可以作为riscv开发的相关参考。 RISC-V - Getting Started Guide — RISC-V - Getting Started Guidehttps://risc-v-getting-started-guide.readthedocs.io/en/latest/index.html RISC-V - Getting Started Gu.

闲人的专栏 737

Python 网络爬虫入门:开启数据采集之旅

网络爬虫,也称为网页蜘蛛,是一种按照一定规则自动抓取互联网信息的程序或脚本。它能够模拟人类在浏览器中的操作,访问网页、解析页面内容,并提取出我们感兴趣的数据,如文本、图片、链接等。例如,当我们想要收集某电商平台上特定商品的价格信息、用户评价,或者获取新闻网站的新闻标题和正文时,网络爬虫就可以派上用场。它可以在短时间内遍历大量的网页,将分散的数据集中起来,为后续的处理和分析提供素材。

m0_74620645的博客 3586

智能小车避障功能的实现(cpp,ubuntu)

智能小车避障功能的实现(cpp,ubuntu)

weixin_62135607的博客 4376

061、LQR(线性二次型调节器)控制基础

本文介绍了LQR(线性二次型调节器)控制在飞控系统中的应用。作者通过一次四旋翼炸机事故引出PID控制的局限性,详细讲解了LQR的数学原理、权重矩阵的物理意义以及实际工程实现方法。文章对比了LQR与PID的控制效果,指出LQR在鲁棒性方面的优势,同时也分析了其存在稳态误差等缺点。最后总结了LQR在飞控中的适用场景,建议将LQR与PID结合使用,并预告了下一章将讨论带积分项的LQI控制。全文包含具体案例、代码实现和调参经验,为飞控算法开发者提供了实用指导。

2401_88858637的博客 720

Python网络爬虫入门到实战

本文介绍了Python网络爬虫的入门和基础知识,涵盖了Requests和Beautiful Soup库的使用,以及一个简单的爬虫示例。网络爬虫是一项强大的技术,可以帮助您自动从互联网上收集数据,但请务必遵守网站的使用条款和法律法规。如果您想进一步发展,Scrapy等框架将成为您的有力助手,帮助您构建更复杂的爬虫项目。开始学习和实践网络爬虫吧,探索这个充满挑战和机遇的领域!

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

让 ABAP 程序天生可翻译:Text Symbols 与 Text Pool 从入门到工程化落地

ABAP 国际化实践:Text Symbols 的工程价值与落地方法 摘要: 本文系统阐述了 ABAP 开发中 Text Symbols 的核心价值与实践方法。通过解耦程序逻辑与语言文本,Text Symbols 实现了代码国际化,避免了硬编码带来的维护难题。文章详细介绍了 Text Pool 结构、两种引用方式(独立引用 TEXT-001 和附着式 '(001)'),以及 SE38 和 SE63 的翻译流程。特别强调最大长度预留、术语统一等工程实践,并提供了 READ TEXTPOOL 自动化检查方案。最

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 235
上一篇: Python 安装教程,新手入门(超详细)含Pycharm开发环境安装教程
下一篇: Python网络爬虫之模拟登陆
智泊AI官方
博客等级 码龄6年 8638粉丝 2667原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值