全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

selenium-综合案例

发布时间:2022-09-08 18:01:00
发布人:qyf

selenium-综合案例

  综合案例

  import os

  from selenium import webdriver

  from selenium.webdriver.common.by import By

  from selenium.webdriver.support import expected_conditions as EC # available since 2.26.0

  from selenium.webdriver.support.ui import WebDriverWait # available since 2.4.0

  from selenium.webdriver.support import expected_conditions

  import pandas as pd

  class MyCrawler(object):

  def __init__(self):

  self.path = "./data"

  if not os.path.exists(self.path):

  os.mkdir(self.path)

  self.driver = webdriver.Chrome()

  self.base_url = "http://data.house.163.com/bj/housing/trend/district/todayprice/{date:s}/{interval:s}/allDistrict/1.html?districtname={disname:s}#stoppoint"

  self.data = None

  def craw_page(self, date="2020.01.01-2020.12.30", interval="month", disname="全市"):

  driver = self.driver

  url = self.base_url.format(date=date, interval=interval, disname=disname)

  driver.get(url)

  try:

  WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "resultdiv_1")))

  self.data = pd.DataFrame()

  ct = True

  while ct:

  self.get_items_in_page(driver)

  e_pages = driver.find_elements_by_xpath(

  '//div[@class="pager_box"]/a[@class="pager_b current"]/following::a[@class="pager_b "]')

  if len(e_pages) > 0:

  next_page_num = e_pages[0].text

  e_pages[0].click()

  # 通过判断当前页是否为我们点击页面的方式来等待页面加载完成

  WebDriverWait(driver, 10).until(

  expected_conditions.text_to_be_present_in_element(

  (By.XPATH, '//a[@class="pager_b current"]'),

  next_page_num

  )

  )

  else:

  ct = False

  brea

  return self.data

  finally:

  driver.quit()

  def get_items_in_page(self, driver):

  e_tr = driver.find_elements_by_xpath("//tr[normalize-space(@class)='mBg1' or normalize-space(@class)='mBg2']")

  temp = pd.DataFrame(e_tr, columns=['web'])

  temp['时间'] = temp.web.apply(lambda x: x.find_element_by_class_name('wd2').text.split(' ')[0])

  temp['套数'] = temp.web.apply(lambda x: x.find_element_by_class_name('wd5').text)

  temp['均价'] = temp.web.apply(lambda x: x.find_element_by_class_name('wd7').text)

  temp['去化'] = temp.web.apply(lambda x: x.find_element_by_class_name('wd14').text)

  del temp['web']

  self.data = pd.concat([temp, self.data], axis=0)

  mcraw = MyCrawler()

  data = mcraw.craw_page()

  data= data.sort_values(by='时间')

  print(data.to_string(index=False))

图片1

相关文章

敏捷开发实行中各岗位职能是什么?

敏捷开发实行中各岗位职能是什么?

2023-10-14
敏捷开发在实际应用中有什么注意点?

敏捷开发在实际应用中有什么注意点?

2023-10-14
软件定制开发中的敏捷开发是什么?

软件定制开发中的敏捷开发是什么?

2023-10-14
三维重建 3D reconstruction有哪些实用算法?

三维重建 3D reconstruction有哪些实用算法?

2023-10-14

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取