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

南宁网站建设策划外包今日武汉最新消息

南宁网站建设策划外包,今日武汉最新消息,wamp做网站,福建省人民政府网站一、淄博链家二手房网站地址 urlhttps://zb.lianjia.com/ershoufang/ 二、基本知识点总结 这个代码是一个使用 Selenium 和 lxml 库编写的网络爬虫,用于从链家网(Lianjia)的二手房列表页面中提取房屋信息。 代码结构 导入库: …

一、淄博链家二手房网站地址

url=https://zb.lianjia.com/ershoufang/

二、基本知识点总结 

这个代码是一个使用 Selenium 和 lxml 库编写的网络爬虫,用于从链家网(Lianjia)的二手房列表页面中提取房屋信息。

代码结构

  1. 导入库

    • time:用于控制时间延迟。

    • lxml.etree:用于解析 HTML 文档并提取数据。

    • selenium:用于自动化浏览器操作,模拟用户点击和页面跳转。

    • selenium.webdriver:提供浏览器驱动(如 ChromeDriver)。

    • selenium.webdriver.support.ui.WebDriverWait:用于等待页面元素加载。

    • selenium.webdriver.common.by.By:用于定位页面元素。

  2. 配置 ChromeDriver

    • 指定 ChromeDriver 的路径,并初始化 Service 对象。

  3. 解析详情页

    • parse_detail_page(link):打开详情页,等待页面加载完成后调用 parse_detail_info 提取信息,然后关闭详情页并返回列表页。

  4. 解析详情页信息

    • parse_detail_info(source):使用 lxml.etree 解析 HTML 源码,提取价格、标题、地址、面积和户型等信息。

  5. 主循环

    • 打开链家网的二手房列表页面。

    • 使用 lxml.etree 解析列表页,获取每个房源的链接。

    • 遍历每个房源链接,调用 parse_detail_page 提取详细信息。

    • 点击“下一页”按钮,重复上述过程,直到没有下一页为止。

  6. 关闭浏览器

    • 在所有操作完成后,关闭浏览器。


基本知识点

  1. Selenium

    • Selenium 是一个用于自动化浏览器操作的工具,常用于网页测试和爬虫。

    • 通过 webdriver.Chrome 启动 Chrome 浏览器。

    • 使用 driver.get(url) 打开指定网页。

    • 使用 driver.execute_script 执行 JavaScript 代码(如打开新标签页)。

    • 使用 driver.switch_to.window 切换浏览器标签页。

  2. 页面元素定位

    • 使用 WebDriverWait 和 EC.presence_of_element_located 等待页面元素加载完成。

    • 使用 By.XPATH 或 By.CLASS_NAME 等方式定位页面元素。

    • 使用 driver.find_element 或 driver.find_elements 查找单个或多个元素。

  3. XPath

    • XPath 是一种用于在 XML 或 HTML 文档中定位节点的语言。

    • 代码中使用 XPath 提取房源链接、价格、标题、地址等信息。

    • 例如://div[@class="price-container"]//span[@class="total"]/text() 提取价格。

  4. lxml.etree

    • lxml 是一个高效的 HTML/XML 解析库。

    • 使用 etree.HTML(source) 将 HTML 源码转换为可解析的对象。

    • 使用 xpath() 方法提取数据。

  5. 异常处理

    • 使用 try-except 捕获异常(如未找到链接或下一页按钮),避免程序崩溃。

  6. 翻页逻辑

    • 通过查找“下一页”按钮并点击实现翻页。

    • 如果“下一页”按钮包含 disabled 类,则停止翻页。

这段代码是一个典型的 Selenium 爬虫,通过模拟用户操作从链家网提取二手房信息。它结合了 Selenium 的浏览器自动化能力和 lxml 的高效解析能力,适合处理需要 JavaScript 渲染的动态网页。通过学习这段代码,可以掌握 Selenium 的基本用法、XPath 数据提取技巧以及爬虫的翻页逻辑。 

三、具体代码以及详解 

  1. 配置 ChromeDriver

    • 指定 ChromeDriver 的路径,并创建 Service 对象,用于管理 ChromeDriver 的启动和停止。

  2. 解析详情页

    • 使用 driver.execute_script 打开新标签页并跳转到详情页。

    • 使用 driver.switch_to.window 切换到新标签页。

    • 使用 WebDriverWait 等待详情页的关键元素加载完成。

    • 调用 parse_detail_info 函数提取详情页信息。

    • 关闭详情页并切换回列表页。

  3. 解析详情页信息

    • 使用 lxml.etree 解析 HTML 源码。

    • 使用 XPath 提取价格、标题、地址、面积和户型等信息。

    • 如果未找到某个信息,则打印“未知”。

  4. 主循环

    • 启动 Chrome 浏览器并打开链家网的二手房列表页面。

    • 使用 WebDriverWait 等待房源列表加载完成。

    • 使用 lxml.etree 解析列表页,提取每个房源的链接。

    • 遍历每个房源链接,调用 parse_detail_page 提取详细信息。

    • 点击“下一页”按钮,重复上述过程,直到没有下一页为止。

  5. 异常处理

    • 在提取链接或点击“下一页”按钮时,捕获异常并处理,避免程序崩溃。

  6. 关闭浏览器

    • 在所有操作完成后,调用 driver.quit() 关闭浏览器。

import time
from lxml import etree
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By# 配置 ChromeDriver
# 指定 ChromeDriver 的路径
driver_path = r"D:\chromdriver\chromedriver-win64\chromedriver.exe"
# 创建 Service 对象,用于管理 ChromeDriver 的启动和停止
service = Service(executable_path=driver_path)# 解析详情页
def parse_detail_page(link):"""打开详情页并提取信息:param link: 详情页的 URL"""# 使用 JavaScript 打开新标签页并跳转到详情页driver.execute_script("window.open('%s')" % link)# 切换到新打开的标签页(详情页)driver.switch_to.window(driver.window_handles[1])# 等待详情页加载完成# 使用 WebDriverWait 等待价格容器元素加载完成,最多等待 10 秒WebDriverWait(driver, timeout=10).until(EC.presence_of_element_located((By.XPATH, '//div[@class="price-container"]')))# 解析详情页信息# 调用 parse_detail_info 函数,传入当前页面的 HTML 源码parse_detail_info(driver.page_source)# 关闭详情页,切换回列表页time.sleep(2)  # 等待 2 秒,确保操作完成driver.close()  # 关闭当前标签页(详情页)driver.switch_to.window(driver.window_handles[0])  # 切换回列表页# 解析详情页信息
def parse_detail_info(source):"""从详情页的 HTML 源码中提取房屋信息:param source: 详情页的 HTML 源码"""# 将 HTML 源码转换为 lxml 的 etree 对象,便于使用 XPath 提取数据html = etree.HTML(source)# 提取价格信息# 使用 XPath 定位价格元素,并提取文本内容price = html.xpath('//div[@class="price-container"]//span[@class="total"]/text()')print("价格:", price[0] if price else "未知")  # 如果找到价格则打印,否则打印“未知”# 提取房屋标题# 使用 XPath 定位标题元素,并提取文本内容title = html.xpath('//h1[@class="main"]/text()')print("标题:", title[0] if title else "未知")  # 如果找到标题则打印,否则打印“未知”# 提取地址信息# 使用 XPath 定位地址元素,并提取文本内容address = html.xpath('//div[@class="communityName"]//a/text()')print("地址:", address[0] if address else "未知")  # 如果找到地址则打印,否则打印“未知”# 提取面积信息# 使用 XPath 定位面积元素,并提取文本内容area = html.xpath('//div[@class="houseInfo"]//div[@class="area"]//div[@class="mainInfo"]/text()')print("面积:", area[0] if area else "未知")  # 如果找到面积则打印,否则打印“未知”# 提取户型信息# 使用 XPath 定位户型元素,并提取文本内容layout = html.xpath('//div[@class="houseInfo"]//div[@class="room"]//div[@class="mainInfo"]/text()')print("户型:", layout[0] if layout else "未知")  # 如果找到户型则打印,否则打印“未知”# 主循环
while True:# 启动 Chrome 浏览器driver = webdriver.Chrome(service=service)# 打开链家网的二手房列表页面driver.get("https://zb.lianjia.com/ershoufang/")# 等待列表页加载完成# 使用 WebDriverWait 等待房源列表元素加载完成,最多等待 10 秒WebDriverWait(driver, timeout=10).until(EC.presence_of_element_located((By.XPATH, '//div[@class="leftContent"]//ul[@class="sellListContent"]')))# 将列表页的 HTML 源码转换为 lxml 的 etree 对象html = etree.HTML(driver.page_source)# 使用 XPath 定位所有房源列表项lis = html.xpath('//div[@class="leftContent"]//ul[@class="sellListContent"]/li')# 遍历每个房源列表项for li in lis:try:# 提取房源的详情页链接link = li.xpath(".//a/@href")[0]  # 调整 XPath 表达式# 调用 parse_detail_page 函数,打开详情页并提取信息parse_detail_page(link)except IndexError:# 如果未找到链接,则跳过该条目print("未找到链接,跳过该条目")continue# 单击下一页按钮try:# 定位“下一页”按钮next_btn = driver.find_element(By.XPATH, "//div[@class='page-box house-lst-page-box']/a[last()]")# 检查“下一页”按钮是否被禁用(即是否到达最后一页)if "disabled" in next_btn.get_attribute("class"):break  # 如果到达最后一页,则退出循环else:# 点击“下一页”按钮driver.execute_script("arguments[0].click();", next_btn)except Exception as e:# 如果未找到“下一页”按钮或无法点击,则退出循环print("未找到下一页按钮或无法点击:", e)break# 关闭浏览器
driver.quit()  # 退出浏览器

 四、运行结果展示

http://www.dtcms.com/wzjs/132032.html

相关文章:

  • 打电话沟通做网站话术病毒式营销方法
  • 做seo网站公司线上营销策划案例
  • 网站开发任务清单怎样推广app
  • 创建网站服务器地址哪里做网络推广
  • 高防服务器租用商丘seo博客
  • 做网站销售提成怎么算凡科建站
  • 网站建设的公司都有哪些网络服务费计入什么科目
  • 青岛开发区网站建设服务国外引流推广软件
  • 广州手机网站建设哪家好简述seo对各类网站的作用
  • 网站源码运行点击seo软件
  • 服务器安装完面板怎么做网站网站营销软文
  • wordpress 上传模板抖音seo软件工具
  • 网站建设 小知识福州网站建设
  • 天津网站建设技术百度的营销方式有哪些
  • 做网站要会什么广告图片
  • 国外的创意设计网站即时热榜
  • 网站开发工程师asp考试seo基础篇
  • 广西贺州疫情最新情况aso应用优化
  • 网站建设的安全可行性手机百度app
  • 网站建设公司是什么百度热榜排行
  • pc端网站设计规范快速收录工具
  • 公司做网站要多少钱免费手游推广代理平台渠道
  • 邯郸网站建设包括哪些百度怎么转人工客服
  • 百度竞价推广账户win10优化大师是官方的吗
  • 网站要实名认证吗百度官方客服
  • 网站的公告轮播效果怎么做深圳关键词推广
  • 公司建设网站的可行性分析南京今日新闻头条
  • 陕西西铜建设有限责任公司网站全国前十名小程序开发公司
  • wordpress1g内存兰州网站seo优化
  • 成都网站设计招聘企业关键词优化推荐