python自动化爬虫实战

news2024/9/23 13:30:43

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)

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于transformer的Seq2Seq机器翻译模型训练、预测教程

前言 机器翻译(Machine Translation, MT)是一类将某种语言(源语言,source language)的句子 x x x翻译成另一种语言(目标语言,target language)的句子 y y y 的任务。机器翻译的相关…

深度学习 - 46.DIN 深度兴趣网络

目录 一.引言 二.摘要 ABSTRACT 三.介绍 INTRODUCTION 1.CTR 在广告系统的作用 2.传统 MLP 存在的问题 3.DIN 的改进 四.近期工作 RELATEDWORK 1.传统推荐算法 2.用户行为抽取 五.背景 BACKGROUD 六.深度兴趣网络 DEEP INTEREST NETWORK 1.特征表示 Feature Repres…

ChatGPT的强化学习部分介绍——PPO算法实战LunarLander-v2

PPO算法 近线策略优化算法(Proximal Policy Optimization Algorithms) 即属于AC框架下的算法,在采样策略梯度算法训练方法的同时,重复利用历史采样的数据进行网络参数更新,提升了策略梯度方法的学习效率。 PPO重要的突…

Leecode101 ——对称二叉树

对称二叉树:Leecode 101 leecode 101 对称二叉树 根据题目描述,首先想清楚,对称二叉树要比较的是哪两个节点。对于二叉树是否对称,要比较的是根节点的左子树与根节点的右子树是不是相互翻转的,其实也就是比较两个树,…

A+CLUB活动预告 | 2023年5月

五月立夏已至,万物并秀。 ACLUB五月活动预告新鲜出炉,本月我们将会有2场峰会活动(深圳)、1场沙龙活动(深圳)和1场管理人支持计划(上海),期待您的参与! 注&a…

06- 算法解读 Fast R-CNN (目标检测)

要点: Fast R-CNN 属于 Two-stage detector 回归损失参考:https://www.cnblogs.com/wangguchangqing/p/12021638.html 二 Fast R-CNN算法 Fast R-CNN 是作者 Ross Girshick 继 R-CNN 后的又一力作。同样使用 VGG16 作为网络的 backbone , …

您应该使用WhatsApp电子商务的3个理由

随着WhatsApp进军电子商务领域并扩大其为企业提供的服务种类,它正迅速成为客户参与的完美工具和对话式商务的绝佳平台。使用WhatsApp作为主要渠道向客户销售商品和服务的前景产生了WhatsApp电子商务一词。 WhatsApp已被加冕为世界领先的消息传递平台。对于最终用户来…

二十三、SQL 数据分析实战(10个简单的SQL题目)

文章目录 题目1: 比赛名单整理题目2: 热门游戏排行题目3: 社区生鲜App覆盖分析题目4: 社区团购行为分析题目5: 统计字符出现次数题目6: 找出各类别商品销量最高的商品题目7: 找出每个部门薪资第二高的员工题目8: 游戏玩家登录情况分析题目9: 用户首单消费金额题目10: 参与优惠活…

这可能是你读过最透彻的TCC方案讲解|分布式事务系列(三)

本文从两个场景说起,详细描述了TCC的详细过程,以及对比2PC有什么区别,适用什么样的场景。 点击上方“后端开发技术”,选择“设为星标” ,优质资源及时送达 在面试前复习 TCC 的时候你是不是这样做的:百度TC…

百度再掀智能手机风云:推出小度AI智能手机

我是卢松松,点点上面的头像,欢迎关注我哦! 太突然了!百度进军手机市场,据报百度也要进军手机市场了。5月底发布首款AI智能手机。目前这款新机处于发布前的最后准备阶段。 这款智能手机将采用百度的AI技术,预计会具备…

react如何渲染包含html标签元素的字符串

如何渲染包含html标签元素的字符串 最近有个搜索替换的需求,用户可以输入关键字信息来匹配出对应的数据,然后对其关键字进行标记显示,如下图所示: 实现上面的需求的思路就是前端去判断检索内容,将内容中对应的关键字…

又失眠了!

下班晚,洗漱之后,就这个点了,睡不着,爬上来和大家随意 BB 几句。 一个人成长的过程,也是自我认同感不断增强的过程,在这个过程中,一个稳定的精神内核不断夯实,你不会为谁的贬低而诚惶…

Linux性能监控与调优工具

Linux性能监控与调优工具 文章目录 Linux性能监控与调优工具1.使用top、 vmstat、 iostat、 sysctl等常用工具2.使用高级分析手段, 如OProfile、 gprof4.使用LTP进行压力测试5.使用Benchmark评估系统 除了保证程序的正确性以外, 在项目开发中往往还关心性…

体验讯飞星火认知大模型,据说中文能力超越ChatGPT

📋 个人简介 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜📝 个人主页:馆主阿牛🔥🎉 支持我:点赞👍收藏⭐️留言&#x1f4d…

Nature | 生成式人工智能如何构建更好的抗体

疫情高峰期,研究人员竞相开发一些首批有效的COVID-19治疗方法:从已经康复的人的血液中分离出来的抗体分子。 现在,科学家已经证明,生成式人工智能(AI)可以通过一些繁琐的过程提供捷径,提出增强抗…

代码随想录算法训练营day29 | 491.递增子序列,46.全排列,47.全排列 II

代码随想录算法训练营day29 | 491.递增子序列,46.全排列,47.全排列 II 491.递增子序列解法一:回溯(map进行数层去重)解法二:回溯(仅针对本题,不具有普适性) 46.全排列解法…

有一说一,这是我看到的全网最新最全的SpringBoot后端接口规范了

一、前言 一个后端接口大致分为四个部分组成:接口地址(url)、接口请求方式(get、post等)、请求数据(request)、响应数据(response)。虽然说后端接口的编写并没有统一规范…

一个.Net功能强大、易于使用、跨平台开源可视化图表

可视化图表运用是非常广泛的,比如BI系统、报表统计等。但是针对桌面应用的应用,很多报表都是收费的,今天给大家推荐一个免费.Net可视化开源的项目! 项目简介 基于C#开发的功能强大、易于使用、跨平台高质量的可视化图表库&#…

Shiro 入门概述

目录 是什么 为什么要用 Shiro Shiro 与 SpringSecurity 的对比 基本功能 原理 是什么 Apache Shiro 是一个功能强大且易于使用的 Java 安全(权限)框架。Shiro 可以完 成:认证、授权、加密、会话管理、与 Web 集成、缓存 等。借助 Shiro 您可以快速轻松 地保护…

Linux 中的文件锁定命令:flock、fcntl、lockfile、flockfile

在 Linux 系统中,文件锁定是一种对文件进行保护的方法,可以防止多个进程同时访问同一个文件,从而导致数据损坏或者冲突。文件锁定命令是一组用于在 Linux 系统中实现文件锁定操作的命令,它们可以用于对文件进行加锁或解锁&#xf…