python自动化爬虫实战

python自动化爬虫实战

偶然的一次机会再次用到爬虫,借此机会记录一下爬虫的学习经历,方便后续复用。

需求:爬取网站数据并存入的csv文件中,总体分为两步

  1. 爬取网站数据
  2. 存到到csv文件中

1、配置爬虫环境

1.1、下载自动化测试驱动

由于需要实现模拟手动点击浏览器的效果,因此笔者使用到了chromedriver.exe自动化驱动文件。这里选择谷歌浏览器相同版本的驱动。
驱动下载中心

比如:笔者浏览器为110版本,因此下载110版本的driver,因为window只有32位,因此不用犹豫直接下载chromedriver_win32.zip文件

在这里插入图片描述

1.2、下载需要的库文件

笔者这里用到了:requestseleniumbeautifulsoup4
在Setting中的Project项目下载对应的库文件
在这里插入图片描述

2、编写代码

以上爬虫环境配置完成后,接下来便可以编码了。
爬虫的基本逻辑:

  1. 配置谷歌浏览器的驱动文件和自动化测试文件
  2. 创建保存爬取数据的字典和设置读取的起始页码和结束页码
  3. 判断是否有下一页并进行等待,如果没有下一页则直接退出
  4. 解析读取到的页面信息
  5. 保存到csv文件中

根据以上的逻辑,大致就可以理解代码的意思了

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
import csv

# 1、设置自动化启动的浏览器和浏览器的驱动器
options = Options()
# 设置自己电脑的浏览器启动文件目录
options.binary_location = "C:\\Users\\wuming\\Google\\Chrome\\Application\\chrome.exe"
options.add_argument('–-incognito')
options.add_argument('--disable-infobars')
options.add_argument('--start-maximized')
# 自动化浏览器驱动器
driver = webdriver.Chrome(options=options, service=Service("D:\\chromedriver.exe"))


# 2、设置爬取的网站
url = 'https://bj.zu.anjuke.com/fangyuan/'
driver.get(url)

# 3、存储爬取的数据  -这里根据需要修改需要存储多少位
data = [['title', 'price', 'detail_url']]

# 4、开始爬取数据
# 计数需要爬取多少数据,一页60条,5k则需要爬取10页,begin:起始页  end:结束页
begin = 1
end = 1
while True:
    # 4.1、等待下一页按钮出现
    try:
        next_button = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.LINK_TEXT, '下一页 >'))
        )
    except:
        break

    # 4.2、点击下一页按钮
    next_button.click()
    # 判断是否到达结束页,到达则退出
    if begin > end:
        break
    begin = begin + 1

    # 4.3、等待页面加载完成
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, 'zu-itemmod'))
    )

    # 4.4、解析页面数据
    house_list = driver.find_elements(By.CLASS_NAME, 'zu-itemmod')
    for house in house_list:
        title = house.find_element(By.TAG_NAME, 'h3').text.strip()
        price = house.find_element(By.TAG_NAME, 'strong').text.strip()
        detail_url = house.find_element(By.TAG_NAME, 'a').get_attribute('href')
        print(title, price, detail_url)
        # 4.5、向data中添加数据
        data.append([title, price, detail_url])

driver.quit()

# 5、将爬取的数据存入csv文件中
with open('D:\\wuming\\data.csv', 'w', newline='') as file:
    writer = csv.writer(file)
    for row in data:
        writer.writerow(row)

根据以上代码,相信大家已经可以爬取数据,至于内容的提取,则需要大家各显神通,后面会详细写一篇文章,说一说如何从爬取的网页中获取想要的信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/26645.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【2023最新】Python + Pycharm + Anaconda安装配置一条龙

【2023最新】Python Pycharm Anaconda安装配置一条龙 文章目录 【2023最新】Python Pycharm Anaconda安装配置一条龙1. Python1.1 Python下载1.2 Python安装1.3 测试 2. Pycharm2.1 Pycharm下载2.2 Pycharm安装配置2.3 你好Pycharm 3. Anaconda3.1 Anaconda下载3.2 Anacond…

【网络】TCP通讯(三次握手、四次挥手;滑动窗口;TCP状态转换;端口复用;TCP心跳检测机制)

前言:建议看着图片,根据文字描述走一遍TCP通讯过程,加深理解。 目录 TCP通信时序: 1)建立连接(三次握手)的过程: 2)数据传输的过程: 3)关闭连…

opencv4 傅里叶变换

傅里叶变换 ① 高频:变化剧烈的灰度分量,例如边界礁石。 ② 低频:变化缓慢的灰度分量,例如一片大海。 ③ 高通滤波器:只保留高频,会使得图像细节增强。高频边界锐化了,增强了,细节…

网瘾少年转行软件测试,月薪20k? 叛逆少年终归成长...

前言: 高中住校期间沉迷游戏(DNF),尤其是高三那年,晚上翻墙出去通宵,白天上课睡觉,高考自然是考了个稀碎,高考结束那个暑假刚开始觉得整个人都自由了,爸妈看我没考上大学,知道我心情…

Sql Server 自动备份

Sql Server 自动备份 文章目录 Sql Server 自动备份1. 打开SQL Server,在管理下找到”维护计划”,右键点击”维护计划向导”,如图;2. 再次点击维护计划向导3. 在选择维护任务下勾选”备份数据库”、”清楚维护任务”4.选择需要备份…

北邮22信通:二叉树显示路径的两种方法 递归函数保存现场返回现场的实例

北邮22信通一枚~ 跟随课程进度每周更新数据结构与算法的代码和文章 持续关注作者 解锁更多邮苑信通专属代码~ 获取更多文章 请访问专栏~ 北邮22信通_青山如墨雨如画的博客-CSDN博客 一.讲解 要想实现二叉树的路径显示,我们要按照…

每日一题——三数之和(双指针)

每日一题 三数之和 题目链接 思路 解析函数原型 首先我们来看一下题目给的函数原型: int** threeSum(int* nums, int numsSize, int* returnSize, int**returnColumnSizes)题目要求我们返回一个二维数组,数组的行数代表着存在多少个满足条件的三元组&…

基于SVM的鸢尾花数据集回归分析

目录 1. 作者介绍2. SVM支持向量机算法2.1 鸢尾花数据集2.2 鸢尾花数据集可视化2.2.1 散点图2.2.2 箱型图2.2.3 三维散点图(3D) 3. SVM算法实现3.1 完整代码3.2 运行结果3.3 问题与分析 1. 作者介绍 张佳伦,男,西安工程大学电子信…

Cuda | Cudnn安装及其配置

文章目录 👉引言💎一、Cuda安装1 选择Cuda版本2下载及运行安装程序3 测试 二、Cudnn安装1、进入官网下载对应cuda版本的cudnn2、下载好相应版本并进行解压安装3、解压完成后4、测试 👉引言💎 学习的最大理由是想摆脱平庸&#xf…

stable diffusion图片资源分享和模型推荐,好用的模型有哪些呢?

前言 这篇文章主要是分享我的图片和推荐一些好用的模型,模型不在多在于精,基于几个好的大模型适当下载一下LORA模型,就能画出非常好的图片,多话不说 图片分享 简单展示 详情请看:https://space.bilibili.com/109890…

Linux基础篇 Ubuntu 22.04的环境安装-02

目录 一、资料的获取 二、安装虚拟机 三、安装Ubuntu过程 四、注意事项 一、资料的获取 1.通过官方网站下载 Ubuntu系统下载 | Ubuntuhttps://cn.ubuntu.com/download2.下载桌面板即可 3.选择下载的版本 二、安装虚拟机 1.创建新的虚拟机 2.选择自定义安装 3.硬件兼容性选…

Es elasticsearch 十九 kibana 可视化配置图表 及功能 集群部署

目录 Es kibana 可视化 下载zip 解压 bin/kibana.bat 启动 管理索引管理 吧logstash 存进来的数据 按照 xxx-* 方式 保存索引模式 通过 discove 配置可视化界面 图表数据实时刷新 时序图配置 饼图配置 表格数据配置 添加仪表盘 图表样例 使用后模拟绘制方法好看些 …

pandas数据预处理

pandas数据预处理 pandas及其数据结构pandas简介Series数据结构及其创建DataFrame数据结构及其创建 利用pandas导入导出数据导入外部数据导入数据文件 导出外部数据导出数据文件 数据概览及预处理数据概览分析利用DataFrame的常用属性利用DataFrame的常用方法 数据清洗缺失值处…

什么是Odoo ERP:部署方式、业务集成、成本投入、发展与未来

ERP部署的类型 如何部署ERP 系统?通过多年的发展,ERP系统的部署方式更加多样化,包括公有云或私有云部署、本地部署或整合不同环境的混合部署场景,企业可根据自身条件与应用场景加以选择。下面介绍了每种部署模式的主要优势&#…

动态规划-硬币排成线

动态规划-硬币排成线 1 描述2 样例2.1 样例 1:2.2 样例 2:2.3 样例 3: 3 算法解题思路及实现3.1 算法解题分析3.1.1 确定状态3.1.2 转移方程3.1.3 初始条件和边界情况3.1.4 计算顺序 3.2 算法实现3.2.1 动态规划常规实现3.2.2 动态规划滚动数组 该题是lintcode的第394题&#x…

在简历上写了“精通”后,我差点被面试官问到窒息....

前言 如果有真才实学,写个精通可以让面试官眼前一亮! 如果是瞎写?基本就要被狠狠地虐一把里! 最近在面试,我现在十分后悔在简历上写了“精通”二字… 先给大家看看我简历上的技能列表: 熟悉软件测试理…

基于相位共轭法的散射聚焦成像研究-Matlab代码

▒▒本文目录▒▒ 一、引言二、相位共轭法散射聚焦成像Matlab仿真三、参考文献四、Matlab程序开发与实验指导 一、引言 一直以来,研究人员致力于分析造成散射的原因、随机介质性质以及各种散射光的特征,并且研究透过散射介质成像。1990年,I.…

基于VMD-SSA-LSTM的多维时序光伏功率预测

目录 1 主要内容 变分模态分解(VMD) 麻雀搜索算法SSA 长短期记忆网络LSTM 2 部分代码 3 程序结果 4 下载链接 1 主要内容 之前分享了预测的程序基于LSTM的负荷和可再生能源出力预测【核心部分复现】,该程序预测效果比较好,并且结构比较清晰&#x…

新能源汽车充电桩的建设及优化分析

安科瑞虞佳豪 新能源汽车充电桩在经历了几年的发展之后,总体情况是在持续走好的,并且充电桩的建设相较于以往有了很大的普及度和安全度,这对新能源汽车车主是一个好事,也鼓励了更多人选择买新能源汽车,但这并不是说新…

如何通过控制点或地物点生产地方坐标系的倾斜摄影三维模型数据?

如何通过控制点或地物点生产地方坐标系的倾斜摄影三维模型数据? 要生成地方坐标系的倾斜摄影三维模型数据,需要进行以下步骤: 1、收集影像数据 首先需要采集大量的航空影像和地面影像,以构建真实世界中的物体模型。这些影像可以…