当前位置: 首页 > news >正文

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:breakbegin = 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.lryc.cn/news/89384.html

相关文章:

  • LVGL-最新版本及其版本定义标准
  • ORB_SLAM2算法中如何计算右目和左目两个特征点的是否匹配?
  • Android 12.0系统Settings主页去掉搜索框
  • 电脑数据丢失如何恢复
  • 大数据分析案例-基于决策树算法构建世界杯比赛预测模型
  • Python 图形界面框架 PyQt5 使用指南
  • 代码随想录算法训练营第四十二天 | 二维dp数组01背包, 力扣 416. 分割等和子集
  • 【1110. 删点成林】
  • 第三章 JVM内存概述
  • 基于SpringBoot的企业客户信息反馈平台的设计与实现
  • 【SA8295P 源码分析】01 - SA8295P 芯片介绍
  • 扩展1:Ray Core详细介绍
  • day08 Spring MVC
  • c++中的extern “C“
  • python异常处理名称整理
  • SpringMVC拦截器
  • Python第八章作业(初级)
  • chatgpt赋能python:Python中如何取消列表
  • Java中List排序的3种方法
  • flutter-读写二进制文件到设备
  • C语言基础知识:内存分配
  • 【Simulink】示波器图形数据导入Matlab重新绘图(论文)
  • 汇编调试及学习
  • Linux - 第19节 - 网络基础(传输层二)
  • web实现日历、阳历农历之间相互转换、npm、push、unshift、includes、innerHTML
  • GcExcel v6.1 支持新的 ‘.sjs‘ 模板文件 ‘.xltx‘ 格式 Crack
  • 面试官:MySQL自增主键一定是连续的吗?
  • 2023ACP世界大赛教育者论坛:让职业教育直面AI机遇与挑战
  • Unity基础 音频组件以及音频播放
  • SAP-MM-采购申请审批那些事!