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

网站模板源代码下载it外包工作怎么样

网站模板源代码下载,it外包工作怎么样,做洁净的网站,中投中原建设有限公司官方网站一、地址: url "https://zb.newhouse.fang.com/house/s/b91" # 第一页的 URL 但是这个爬虫我不知道为啥总是翻不了页数,请帮忙修改一下~ 二、用到的知识点以及代码详解: 这段代码是一个使用Selenium和lxml库实现的网页爬虫&a…

一、地址:

url = "https://zb.newhouse.fang.com/house/s/b91"  # 第一页的 URL

但是这个爬虫我不知道为啥总是翻不了页数,请帮忙修改一下~

二、用到的知识点以及代码详解:

这段代码是一个使用Selenium和lxml库实现的网页爬虫,主要用于爬取房天下网站(https://fang.com)上淄博地区的新房信息。

主要功能

  1. 使用Selenium控制Chrome浏览器自动翻页爬取新房列表

  2. 对每个新房项目打开详情页提取详细信息

  3. 提取的信息包括:房屋标题、价格、地址、咨询电话和户型

  4. 自动处理翻页逻辑,直到最后一页

  5. 包含异常处理机制,防止程序意外中断

代码特点

  1. 自动化浏览器控制:使用Selenium模拟真实用户操作浏览器

  2. 显式等待:使用WebDriverWait确保元素加载完成后再进行操作

  3. 多标签页处理:在新标签页中打开详情页,不影响列表页状态

  4. 健壮性设计

    • 包含多种异常处理

    • 检查元素是否存在再操作

    • 处理浏览器意外关闭情况

  5. 数据提取:使用lxml的XPath高效提取所需信息

# 导入必要的库
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
from selenium.common.exceptions import InvalidSessionIdException# 配置 ChromeDriver
service = Service(executable_path=r"D:\chromdriver\chromedriver-win64\chromedriver.exe")
driver = webdriver.Chrome(service=service)
driver.set_page_load_timeout(30)  # 设置页面加载超时时间为 30 秒def parse_detail_page(link):"""打开详情页并提取信息功能:在新标签页中打开详情页,等待页面加载完成后调用解析函数,最后关闭详情页标签参数:link: 详情页的URL链接"""try:# 使用JavaScript在新标签页中打开链接driver.execute_script("window.open('%s')" % link)# 切换到新打开的标签页driver.switch_to.window(driver.window_handles[1])# 显式等待,直到价格信息元素加载完成WebDriverWait(driver, timeout=10).until(EC.presence_of_element_located((By.XPATH, '//div[@class="price_line clearfix"]')))# 调用详情页解析函数parse_detail_info(driver.page_source)except Exception as e:print("解析详情页时出错:", e)finally:# 确保关闭详情页标签并切换回列表页if len(driver.window_handles) > 1:driver.close()driver.switch_to.window(driver.window_handles[0])def parse_detail_info(source):"""从详情页HTML源码中提取房屋信息功能:使用lxml解析HTML,提取房屋标题、价格、地址、电话和户型信息参数:source: 详情页的HTML源码"""# 将HTML源码转换为lxml的HTML对象html = etree.HTML(source)# 提取房屋标题(位于h1标签内)title = html.xpath('//h1//text()')print("房屋价格:", title[0] if title else "未知")# 提取价格信息(位于class为price_line clearfix的div内)price = html.xpath('//div[@class="price_line clearfix"]//p//text()')price = " ".join(price).strip() if price else "未知"print("价格:", price)# 提取地址信息(id为xfptxq_B04_12的div内的span标签)address = html.xpath('//div[@id="xfptxq_B04_12"]/span/text()')print("地址:", address[0] if address else "未知")# 提取咨询电话(class为phone_num的元素内)phone = html.xpath('//*[@class="phone_num"]/span[2]/text()')phone = " ".join(phone).strip() if phone else "未知"print("咨询电话:", phone)# 提取户型信息(class为fl zlhx的div内的a标签)layout = html.xpath('//div[@class="fl zlhx"]/a/text()')layout = " ".join(layout).strip() if layout else "未知"print("户型:", layout)print("---------------------------------------------------------")# 主程序入口
if __name__ == "__main__":# 初始URL(淄博新房列表第一页)url = "https://zb.newhouse.fang.com/house/s/b91"driver.get(url)try:# 主循环,持续爬取直到最后一页while True:print(f"正在爬取页面: {driver.current_url}")# 等待列表页加载完成(等待ul元素出现)WebDriverWait(driver, timeout=10).until(EC.presence_of_element_located((By.XPATH, '//div[@class="main_1200 tf"]//ul')))# 解析列表页HTMLhtml = etree.HTML(driver.page_source)# 获取所有房源列表项lis = html.xpath('//div[@class="main_1200 tf"]//ul/li')# 遍历每个房源项for li in lis:try:# 获取房源详情页链接link = li.xpath(".//a/@href")[0]# 检查链接有效性(只处理房天下域名的链接)if link.startswith("https://zb.newhouse.fang.com"):parse_detail_page(link)else:print("跳过无效链接:", link)except IndexError:print("未找到链接,跳过该条目")continue# 翻页逻辑try:# 记录当前URL用于判断页面是否已跳转current_url = driver.current_url# 查找下一页按钮next_btn = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//a[@class='next']")))# 检查下一页按钮是否可用(是否已到最后一页)if "disabled" in next_btn.get_attribute("class"):print("已到达最后一页,停止爬取")break  # 退出循环else:# 使用JavaScript点击下一页按钮(避免元素拦截问题)driver.execute_script("arguments[0].click();", next_btn)# 等待URL发生变化(页面跳转完成)WebDriverWait(driver, 10).until(lambda driver: driver.current_url != current_url)# 等待新页面的房源列表加载完成WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//div[@class="main_1200 tf"]//ul')))time.sleep(2)  # 额外等待2秒确保页面完全加载except Exception as e:print("翻页时出错:", e)break  # 出错时退出循环# 处理浏览器会话异常(如浏览器意外关闭)except InvalidSessionIdException:print("浏览器会话已关闭,重新初始化浏览器...")driver.quit()# 重新初始化浏览器driver = webdriver.Chrome(service=service)driver.get(url)  # 重新加载初始页面finally:# 确保最终关闭浏览器driver.quit()

 三、运行结果

1.pycharm里面的代码运行结果

2.弹出的网页运行可视化展示 

这样就可以爬取到想要的数据了~

 


文章转载自:

http://ZyWFQ0X2.bxnrx.cn
http://I7AqktCc.bxnrx.cn
http://HFYoUdjA.bxnrx.cn
http://YwEF3VQp.bxnrx.cn
http://yaGYOAOo.bxnrx.cn
http://Jtgfduzw.bxnrx.cn
http://Yey4OY9Y.bxnrx.cn
http://wVKH4DKE.bxnrx.cn
http://1gMHlN7v.bxnrx.cn
http://ognkEA6V.bxnrx.cn
http://rgCbc6vj.bxnrx.cn
http://gZ1lJHF0.bxnrx.cn
http://1LWg3Vrr.bxnrx.cn
http://unXZlpkj.bxnrx.cn
http://bH44udvL.bxnrx.cn
http://niGPqgoM.bxnrx.cn
http://Y3NfPTeQ.bxnrx.cn
http://7c6lyan5.bxnrx.cn
http://m9rBLsKU.bxnrx.cn
http://HDvBL5C8.bxnrx.cn
http://eHz0xozO.bxnrx.cn
http://WOzTSqZr.bxnrx.cn
http://6j9qXfRd.bxnrx.cn
http://MwKvqjfy.bxnrx.cn
http://Q9CdJZ20.bxnrx.cn
http://xoq3dj0W.bxnrx.cn
http://8ESXAc7x.bxnrx.cn
http://y8ROQpKr.bxnrx.cn
http://wyx2h54V.bxnrx.cn
http://UFbo5WBT.bxnrx.cn
http://www.dtcms.com/wzjs/675667.html

相关文章:

  • 外贸推广网站有哪些seo实战培训机构
  • html5网站代理成都门户网站建设多少钱
  • 合肥 网站建设公司wordpress文章同步国外博客
  • 做问卷调查的网站品牌推广理论
  • 站长之家查询做网站前应该先出图
  • 新网站建设一般多少钱做响应式网站的公司
  • h5如何做网站网站正在建设中英文表述
  • 网站超市安装网站建设首页突出什么
  • 手机建设银行官方网站如何建网站看到物联网设备信息
  • ci框架建设网站互联网网站分了
  • 销售网站建设怎么样昆明室内设计学校
  • 网站建设核心系统企业网站建设费用计入什么科目
  • 什么网站做一件代发wordpress外卖
  • 荥阳网站建设价格工装设计效果图网站
  • 免费网站推广2023网站维护推广怎么做
  • 网站建设微信公众号文章做农产品网站需要办什么证
  • 企业网站建设中存在的问题一个万能的营销方案
  • 厦门做网站seo衡阳新闻头条最新消息
  • 虚拟机做门户网站如何绑定域名自己做的网站如何连接入数据库
  • 网站模板d一品资源网网站建设和域名备案
  • 婚庆网站名字wordpress招聘主题
  • 深圳网站设计公司排名前十做公众号文章的网站
  • php网站开发如何实现删除功能手机网站开发模板
  • 韵博工业设计搜索引擎优化需要多少钱
  • 企业网站建设存在的问题上网建站
  • 模拟购物网站开发项目wordpress 创建主题
  • 呼和浩特整站优化盘锦做网站价格
  • 唐山做网站哪家公司好大学网站建设图
  • 网站开发遇到的最大困难模板网站免费下载
  • 做网站的公司哪家最好医院网站管理制度