Python使用xlm库爬取信息

2023-11-10 08:20
文章标签 python 使用 信息 xlm

本文主要是介绍Python使用xlm库爬取信息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 使用步骤
    • 1.引入库
    • 2.下级数据


前言

记录第一次爬虫记录,以京客隆超市店铺信息为目标,拿到店铺的全部信息,并生成excel表格
在这里插入图片描述


使用步骤

1.引入库

在爬取网站信息是首先我们要了解该页面的组成,了解该页面的下级分类,找到你所需要的元素,通过xpath定位来获取页面的信息,需要一定的WEb元素定位的知识,只有找到正确的位置才能进行下面的操作,基本操作就是只要用到url,就设置伪装头,然后解析页面源码,在通过xpath获得文本

这里用到etree.HTML方法把html的文本内容解析成html对象

在这里插入图片描述

import requests   
import pandas as pd
from lxml import etreebaseUrl ='http://www.jkl.com.cn/cn/shop.aspx'  # 爬取页面的数据
heade ={
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36'
}  # 伪装头信息
# 1 首先拿取城区信息
res =requests.get(url=baseUrl,headers=heade).text   #   设置变量接受 基础页的响应数据
# print(res.text)
tree = etree.HTML(res)   # 设置变量获得 解析数据
get_list= tree.xpath('//div[@class="infoLis"]//@href')   # 设置变量 通过xpath定位拿到我们所需的城区列表的路径
# print(get_list)
for qu_list in get_list: # 遍历列表,拿到每个区的地址get_url_qu = 'http://www.jkl.com.cn/cn/' + qu_list   # 拼接网址 ,a为单个分类的路径# print(get_url_qu)res2 = requests.post(url=get_url_qu,headers=heade).text  # 获得区列表下的响应数据tree1 = etree.HTML(res2)  # 解析 数据# print(tree1)city_shop_name = tree1.xpath('//span[@class="con01"]/text()')city_shop_dis = tree1.xpath('//*[@class="con02"]/text()')city_shop_phone = tree1.xpath('//span[@class="con03"]/text()')city_shop_time = tree1.xpath('//span[@class="con04"]/text()')# print(city_shop_phone)name_list=[]for name in city_shop_name:  # 通过循环去除空格,获得列表数据new_name = name.strip()# print(new_name)name_list.append(new_name)# print(name_list)file = pd.DataFrame({'店名':name_list, '地址':city_shop_dis, '电话':city_shop_phone, '营业时间':city_shop_time})file.to_csv('E:/店铺信息2.csv', index=False, header=0, mode='a', encoding='ANSI')

这样就可以获的每个城区下的店铺信息,但我们发现朝阳区的下级目录,不是一夜有多页,而我们写的程序只能获得单页的数据
在这里插入图片描述
解决这个问题只要关注这个部分,通过点击下一页我们会发现这2个数据在变,其他数据不变,把这2个数据通过字典键值队形式代入即可
在这里插入图片描述

2.下级数据

接上:

 if get_url_qu == 'http://www.jkl.com.cn/cn/shopLis.aspx?id=865':for i in range(2, 4):  # 已经拿到第一页数据data = {'__EVENTTARGET': 'AspNetPager1','__EVENTARGUMENT': i}html = requests.post(url=get_url_qu, headers=heade, data=data).text  # 获得页面html信息parsing = etree.HTML(html)  # 解析city_shop_name = parsing.xpath('//span[@class="con01"]/text()')city_shop_dis = parsing.xpath('//*[@class="con02"]/text()')city_shop_phone = parsing.xpath('//span[@class="con03"]/text()')city_shop_time = parsing.xpath('//span[@class="con04"]/text()')name_list = []for name in city_shop_name:  # 通过循环去除空格,获得列表数据new_name = name.strip()# print(new_name)name_list.append(new_name)file = pd.DataFrame({'店名': name_list, '地址': city_shop_dis, '电话': city_shop_phone, '营业时间': city_shop_time})file.to_csv('E:/店铺信息2.csv', index=False, header=0, mode='a', encoding='ANSI')

得到的数据如下,保存的csv的文件,改下后缀就可以得到你想要的文件
在这里插入图片描述

这篇关于Python使用xlm库爬取信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/381464

相关文章

SpringBoot中使用Flux实现流式返回的方法小结

《SpringBoot中使用Flux实现流式返回的方法小结》文章介绍流式返回(StreamingResponse)在SpringBoot中通过Flux实现,优势包括提升用户体验、降低内存消耗、支持长连... 目录背景流式返回的核心概念与优势1. 提升用户体验2. 降低内存消耗3. 支持长连接与实时通信在Sp

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

Python如何去除图片干扰代码示例

《Python如何去除图片干扰代码示例》图片降噪是一个广泛应用于图像处理的技术,可以提高图像质量和相关应用的效果,:本文主要介绍Python如何去除图片干扰的相关资料,文中通过代码介绍的非常详细,... 目录一、噪声去除1. 高斯噪声(像素值正态分布扰动)2. 椒盐噪声(随机黑白像素点)3. 复杂噪声(如伪

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O

基于Linux的ffmpeg python的关键帧抽取

《基于Linux的ffmpegpython的关键帧抽取》本文主要介绍了基于Linux的ffmpegpython的关键帧抽取,实现以按帧或时间间隔抽取关键帧,文中通过示例代码介绍的非常详细,对大家的学... 目录1.FFmpeg的环境配置1) 创建一个虚拟环境envjavascript2) ffmpeg-py

python使用库爬取m3u8文件的示例

《python使用库爬取m3u8文件的示例》本文主要介绍了python使用库爬取m3u8文件的示例,可以使用requests、m3u8、ffmpeg等库,实现获取、解析、下载视频片段并合并等步骤,具有... 目录一、准备工作二、获取m3u8文件内容三、解析m3u8文件四、下载视频片段五、合并视频片段六、错误

Python中提取文件名扩展名的多种方法实现

《Python中提取文件名扩展名的多种方法实现》在Python编程中,经常会遇到需要从文件名中提取扩展名的场景,Python提供了多种方法来实现这一功能,不同方法适用于不同的场景和需求,包括os.pa... 目录技术背景实现步骤方法一:使用os.path.splitext方法二:使用pathlib模块方法三

Python打印对象所有属性和值的方法小结

《Python打印对象所有属性和值的方法小结》在Python开发过程中,调试代码时经常需要查看对象的当前状态,也就是对象的所有属性和对应的值,然而,Python并没有像PHP的print_r那样直接提... 目录python中打印对象所有属性和值的方法实现步骤1. 使用vars()和pprint()2. 使

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项