Python 网络爬虫 007 (编程) 通过网站地图爬取目标站点的所有网页

python调用百度地图API爬取西安市POI数据 任务前提 做该项目之前,首先得有基础知识: 编程语言:python 编译工具:PyCharm 网络爬虫相关知识,xpath库,numpy,pandas等库。 任务准备: 去百度地图开放平台申请密匙:http://lbsyun.baidu.com/ 步骤: 登录----->控制台----->注册登录成为开发者(已成为则跳过该步骤)----->创建应用------>填写应用名称----->应用类型选择浏览器端---->refer白名单输入“*”—>创建应用成功----- 阅读详情

通过网站地图爬取目标站点的所有网页

使用的系统:Windows 10 64位
Python 语言版本:Python 2.7.10 V
使用的编程 Python 的集成开发环境:PyCharm 2016 04
我使用的 urllib 的版本:urllib2

注意: 我没这里使用的是 Python2 ,而不是Python3


一 . 前言

通过前两节(爬取一个网页 的网络爬虫 和 解决爬取到的网页显示时乱码问题),我们终于完成了最终的 download() 函数。
这一节 和我未来的两节,我一个介绍 3种方法来爬取一个站点里面所有的网页。

这一篇博客,就来介绍第一种方法:使用目标网站的网站地图文件(Sitemap.xml)来爬取 目标站点里面的所有的网页。


二 . 原理

之前,我们在目标网站的 robots.txt 文件中发现了网站地图(Sitemap.xml 文件),网站地图中包含了这个站点里面所有网页的URL。想要下载目标网站里面的所有网页,我们可以通过一个简单的正则表达式来解析网站地图(Sitemap.xml 文件)。如何解析?很简单,只需要从<loc>标签中提取出 URL 即可,就是这点工作。

在以后的博客中,我还会介绍一种更加健壮的解析方法 — CCS选择器。


三 . 代码

import re

def crawl_sitemap(url):
    # download the sitemap file
    sitemap = download(url)
    # extract the sitemap links
    links = re.findall('<loc>(.*?)</loc>', sitemap)
    # download each link
    for link in links:
        # scrape html here
        # ...
        html = download(link)

其中,代码中使用的 download(url) 函数的代码在 这一篇博客的最下面。

四 . 解释代码

需要解释的就是下面这句 使用正则表达式来解析 Sitemap文件里面的 URL:

    links = re.findall('<loc>(.*?)</loc>', sitemap)

findall() 函数是找到所有符合条件的Str字符串。<loc>(.*?)</loc>指的是:(.*?) 意思是:匹配所有<loc>(xxxx)</loc> 这样字符串,并将括号内的数据作为结果返回。
详细的内容,请见下面的两个博客:
Python 正则表达式 总结

Python 正则表达式 — findall()方法


五 . 运行

先将 Python 终端交互程序启动:(在 PyCharm 软件 中的 Terminal 窗口里,或者在Windows 系统的DOS窗口。)

> C:\Python27\python.exe -i 1-4-2-sitema
p_scrape.py

现在运行网站地图爬虫,从目标网站(http://example.webscraping.com/sitemap.xml)中下载所有网页。

>>> crawl_sitemap('http://example.webscraping.com/sitemap.xml')
Downloading:  http://example.webscraping.com/sitemap.xml
Downloading:  http://example.webscraping.com/view/Afghanistan-1
Downloading:  http://example.webscraping.com/view/Aland-Islands-2
Downloading:  http://example.webscraping.com/view/Albania-3
Downloading:  http://example.webscraping.com/view/Algeria-4
...


总结:
可以看到,程序运行的效果和我们的预期一致。
但是不是每个站点都可以依靠Sitemap文件来爬取站点中的每个网页。有些站点可能根本就没有 Sitemap文件。
所以我们下一节在介绍一种方法,它不会依赖Sitemap文件,是使用索引号的方法来爬取一个站点中所有的网页的。

百度地图的scrapy爬虫项目 Python3.5,完整百度地图的scrapy爬虫项目代码,通过城市ID抓取海量商户数据 立即下载

相关推荐

基于STM32的RS485土壤氮磷钾与PH传感器数据采集与OLED显示实战(附完整代码)

本文详细介绍了基于STM32单片机通过RS485协议采集土壤氮磷钾与PH传感器数据的实战项目。涵盖硬件选型、连接方法、Modbus-RTU通信协议解析、STM32程序实现及OLED显示,提供完整代码和调试技巧,适用于农业物联网环境监测系统。

kotlin6android的博客 336

Python 百度地图爬虫 - 搜索数据采集

百度地图信息采集器-----含UI 界面展示: 数据展示: 技术点: requests — 用于对页面发起请求 threading — 线程库 解决了页面爬取的速度 os — 创建文件以及打开指定文件 xlwt — 将数据写入excel 表中 pyqt5 — 解决了界面的UI需求 UI界面部分代码: class FormLayout(QtWidgets.QWidget): def __init__(self): QtWidgets.QWidget.__init__(s.

weixin_44369251的博客 2612

DeepSeek+Coze扣子搭建智能体(保姆级教程)

DeepSeek+Coze扣子搭建智能体(保姆级教程)

yizhen91y的博客 1万+

Python爬虫实战系列6:高德地图充电站数据采集

1.阿里系的产品基本都有风控,且滑块都基本长一个样,虽然滑块看起来简单(往右一滑的样子)但是不管你怎么滑,都很难滑过。感觉这滑块就是个小游戏~2.爬虫过程中,也可以多想想其他解决方案,比如监听浏览器数据包。由于信息安全问题,这里不放完整源码。本文章内容及代码只做学习交流使用,作者不负责任何由此引起的任何法律责任。您在引用该代码时代表您已同意该协议,由此引起的任何法律责任由您承担。

2402_84205067的博客 8180

AU混响终极指南:从‘干声’到‘空间感’,用总音轨和发送技巧打造专业人声

本文详细介绍了如何在Adobe Audition(AU)中使用混响效果器,通过总音轨和发送技巧将‘干声’转化为具有专业‘空间感’的人声。从混响基础原理到总线架构设置,再到精细控制和自动化调整,全面解析了提升音频质量的实用技巧,适用于音乐制作、播客和内容创作。

weixin_30512089的博客 332

Ubuntu20.04系统笔记本网卡AX211无法找到wifi问题

之前电脑的系统是18.04基本上安装好了系统,可以直接连上wifi,在买了拯救者y9000p2022版本之后,因为网卡太新,安装ubuntu18.04或者20.04之后会没有wifi连接,非常不方便。于是上网找了各种帖子去解决这个问题。具体实现有所不同。 主要参考了这个帖子来解决的:http://t.csdn.cn/7807R 首先: sudo apt install flex bison 然后: git clone https://github.com/intel/backpor.

weixin_42825962的博客 1万+

python批量地址爬取(高德地图)

在地理分析中,通常需要自己获取经纬度数据,当地址只有几个的时候,可以直接在网页输入地址拾取经纬度即可,而当地址数量庞大,比如几十个几百个的时候,肯定是耗费时间的,这时就可以借助python与地图接口来进行经纬度的爬取。当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

qq_41314882的博客 6279

【OpenClaw从入门到精通】第19篇:OpenClaw电商实战:从零搭建比价+库存监控+自动调价全自动化系统(2026实测附完整代码)

2026年OpenClaw成为全球最火开源项目,电商行业因其场景高频、数据标准化成为其核心落地领域。本文针对电商从业者面临的比价繁琐、库存混乱、调价滞后三大痛点,基于OpenClaw的“接入层-执行层-决策层”三层架构,从零拆解智能比价、多平台库存监控、动态自动调价三大核心场景的实现逻辑。文中包含完整的环境配置、技能安装、代码实现(含Python脚本与YAML配置)、执行结果验证,同时补充关键算法原理与避坑指南,兼顾新手入门与进阶提升。读者可直接参考本文实操流程,快速搭建属于自己的电商自动化系统,实现7×2

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 2238

Python爬虫-爬取全国各地市的邮编链接

最近练习爬虫,爬取全国各地市的邮编链接,与大家分享,希望起到抛砖引玉的作用。

Bruce_xiaowei的博客 712

大语言模型原理与工程实践:手把手教你训练 7B 大语言模型 自动化训练框架

近年来,大语言模型(Large Language Models,LLMs)在自然语言处理领域取得了突破性进展。从GPT-3到ChatGPT,再到最新的GPT-4,这些模型展现出了惊人的语言理解和生成能力,引发了学术界和产业界的广泛关注。然而,训练如此庞大的模型不仅需要海量的数据和计算资源,还需要复杂的工程实践和优化技巧。本文将深入探讨大语言模型的原理,并以7B参数规模的模型为例,详细介绍如何构建一个自动化训练框架,使读者能够亲自动手训练自己的大语言模型。

AI天才研究院 1923

9.1 机器人动力学建模

目录9.1 机器人动力学建模一、机器人动力学的基本概念1. 什么是机器人动力学?2. 动力学方程二、机器人动力学建模方法1. 拉格朗日方法2. 牛顿-欧拉方法三、Simulink 中的机器人动力学建模1. 使用 Simscape Multibody 建模示例:构建一个两连杆机械臂的动力学模型。步骤:2. 使用 Robotics System Toolbox 建模示例:构建一个六自由度工业机器人的动力学模型。步骤:四、示例:两连杆机械臂的动力学建模目标:步骤:五、结果分析1. 动态响应2. 参数敏感性六、总结

xiaoheshang_123的博客 626

python 爬虫 批量获取全国各市县的邮政编码

运行效果如下,邮编直接具体到地级市,县等行政区划地区: 从北京开始,一直到台湾全部的邮政编码都有 代码实现: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2020/11/21 10:05 # @Author : huni # @File : 全国邮编.py # @Software: PyCharm import requests from lxml import etree import sqlite3 def ge

乎你的博客 25万+

黑猫带你学UFS协议第2篇:UFS相关名词释义

本文依据UFSJEDEC3.1、个人工作经验整理而成,如有错误请留言。文章为个人辛苦整理,付费内容,已加入原创保护,禁止私自转载。文章所在专栏《黑猫带你学UFS协议详解》

黑猫奥利奥的博客 5305

Python爬虫学习:Sitemap(分析网站结构)

定义 Sitemap 可方便网站管理员通知搜索引擎他们网站上有哪些可供抓取的网页。最简单的 Sitemap 形式,就是XML 文件,在其中列出网站中的网址以及关于每个网址的其他元数据(上次更新的时间、更改的频率以及相对于网站上其他网址的重要程度为何等),以便搜索引擎可以更加智能地抓取网站。 2.样例 对于Sitemap位置有的网站可能放在Robots协议里,有的可能遵守某个协议 它定义了所有...

南淮北安的博客 2134

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

精雕软件(JDpaint) 5.5 绿色版

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

c++编程练习 007:返回什么才好呢

北大程序设计与算法(三)测验题汇总(2020春季) 描述 程序填空,使其按要求输出 #include <iostream> using namespace std; class A { public: int val; A(int // 在此处补充你的代码 }; int main() { int m,n; A a; cout << a.val <<...

计算机科学与技术专业学生的成长之路 3658

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

程序员的故事 007 程序员是吃青春饭的

007 程序员是吃青春饭的     这天中午吃饭时照例闲聊,小眼镜听到了一个让他心惊肉跳的说法:程序员是吃青春饭的。     他想,这程序员的饭我还没能吃上呢。刚刚在公司里做测试工作,背地里悄悄地学习编程。想着以后请领导给转个岗做成程序员。如果过几年了反而没人要了,自己可怎么办哪。     黎想在大呼小叫,“程序员一过30岁,就跟妓女一样,人老珠黄,没人要了。”     “确实,做

gcfang123的专栏 2274

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

通过python语言爬取全国的地址数据

1.爬取地图数据库 2.拆分为电子表格 3.制作选项卡 围绕上面的思路,看看是否可行。

CaptureItTechnology的博客 1618

Python爬取某网站文档数据完整教程(附源码)

前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。 基本开发环境 Python 3.6 Pycharm 相关模块的使用 import os import requests import time import re import json from docx import Document from docx.shared import Cm 安装Python并添加到环境变量,pip安装需要的相关模块即可。 Python爬虫、数.

Python案例分享,B站视频教程:https://space.bilibili.com/523606542 4495

python如何全网爬取_如何通过Python爬取互联网

大家用过谷歌,百度吧。这类搜索引擎是怎么对外提供服务的呢?显然,这不是本文要说的事情。但是,任何一个搜索引擎,都缺不了网页收录这个步骤,所以网络爬虫是搜素引擎最重要,也是最基本的组成部分。那么我们每个人其实都可以写一个简单的网络爬虫,用来爬你自己喜欢的东西,你懂的。那么,我们就废话少说,开始吧。网络爬虫(网络蜘蛛)经常被人们认为是一项特别强大而实用的工具,用来从网上搜集各种不同的数据。其实它的本质...

weixin_39783426的博客 2100

Python+IP代理爬虫实例:爬取常见知名网站信息

本博客仅用于技术讨论,若有侵权,联系笔者删除。 此次的目的是爬取国内常见网站的基本信息。爬取的黄页是网站列表,爬取了三万多条数据。以下是结果图: 一、代理IP 由于一个IP重复请求多次后服务器会不响应,所以此处笔者采用代理IP的方式。代码如下: #获取代理IP列表 def get_ip_list(url_now, headers): web_data = requests.g...

VM_Alike的博客 3449

Python利用selenium爬取去哪儿网

##加粗样式 需要解决的难题: 1) 验证码的识别 2) 对网页的验证码进行截取 2) IP池的构建 3) 对网页延迟加载的解决 第一步: 验证码的识别: 之前也试过写个算法,对验证码进行识别,但是太复杂了,没能实现,网上搜索,发现有个"云打码"的平台,能够识别,准确率高达98%,下面是Python对这个接口的引用: #coding=utf-8 import json import ti...

weixin_41279532的博客 2024

【python爬虫专项(22)】利用Selenium获取网页信息(以爬取骆驼祥子数据为例)

网页信息定位常用方法 1)定位单个元素(相当bs里面的find) find_element_by_id find_element_by_name find_element_by_xpath find_element_by_link_text find_element_by_partial_link_text find_element_by_tag_name find_element_by_clas...

lys_828的博客 3289

requests请求返回的数据为空,相应状态码418怎么解决

import requests from fake_useragent import UserAgent from lxml import etree ua = UserAgent() print(ua.chrome) url = "https://movie.douban.com/subject/26266893/reviews?start=120" headers = {'User-Agent...

aiwen_zhang的博客 1万+

Python爬虫爬取网页数据

本篇文章介绍爬虫爬取某租房信息数据,数据仅用于学习使用无商业用途。 首先在Python Console 控制台中安装requests、parsel模块,requests发送网络请求获取数据,parsel用于对数据源进行解析。 pip install requests pip install parsel 下面开始实操代码: import requests import parsel # file = open("C:\\Users\\AUSU\\Desktop\\租房数据.txt", "a"

qq_42155078的博客 3228

Python爬虫学习3-动态网页抓取基础

从零开始的Python爬虫学习3-动态网页抓取基础 由于静态网页和动态网页在原理上存在差异,因此在学习使用Python爬取动态网页内容时需要先学习动态网页的基本概念并理解其与静态网页的差异。 动态网页技术的基本原理 AJAX技术 即异步JavaScript和XML,通过后台与Server端的少量数据交换使网页实现异步更新,AJAX技术可以在不重新加载整个网页的情况下对网页进行部分更新。 AJAX技术节省了网页重复内容的下载并节省了流量,因此得到了广泛应用。 ↓AJAX技术的应用 使用AJAX技术动态标识的内

capodexi的博客 507
上一篇: Python 网络爬虫 006 (编程) 解决下载(或叫:爬取)到的网页乱码问题
下一篇: Python 网络爬虫 008 (编程) 通过ID索引号遍历目标网页里链接的所有网页
AoboSir
博客等级 码龄10年 996粉丝 285原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值