Python Selenium税务爬取脚本本地正常,Ubuntu服务器端bills页无表格
税务数据爬取需求与运行异常问题
具体爬取需求
- 目标页面为指定房产编号对应的布劳沃德县公开税务查询账单页
- 执行步骤:
- 定位页面账单列表表格,获取表格第一行条目
- 点击该条目跳转至对应税单详情页
- 抓取*从价税(Ad Valorem Taxes)*板块下的所有征税主体(TAXING AUTHORITY)名称、对应税率(MILLAGE)数据
运行异常表现
已基于Python Selenium完成对应爬取脚本开发:
- 脚本在本地Linux Mint 19环境可稳定运行,全流程逻辑正常
- 脚本部署到Ubuntu服务器环境后完全失效:加载账单页面时未渲染任何表格及表格数据,打印
driver.page_source源码后确认表格相关DOM元素完全缺失,请求定位问题解决方案
现有爬取函数核心源码
class TaxScraper: def download_tax_bill_form(self, formatted_apn): """ 按指定格式化后的房产编号抓取县税单表格数据 :param formatted_apn: 格式化完成的房产编号 返回结构化字典对象,结构示例如下: { ad_valorem_taxes: [ { 'group_name': 'BROWARD COUNTY GOVERNMENT', 'items': [ { 'name': 'COUNTYWIDE SERVICES', 'millage': 5.49990 }, ... ] }, ... ] } """ if self.driver is None: # 初始化Chrome驱动实例 self.driver = self.create_driver() # 拼接账单页URL并跳转 self.driver.get(f'https://broward.county-taxes.com/public/real_estate/parcels/{formatted_apn}/bills') self.driver.implicitly_wait(5) # 等待并点击账单表格第一行(对应上一年度税单条目) WebDriverWait(self.driver, 20).until( EC.element_to_be_clickable( ( By.XPATH, "(//table[@class='table table-hover bills']/tbody)[1]/tr/th/a[1]" ) ) ).click() # 定位从价税板块下的所有表格行容器 ad_valorem_taxes_items = self.driver.find_elements_by_xpath("//div[@class='row advalorem']/div/table/tbody") groups = [] group = {} # 遍历表格元素转换为结构化字典 for item in ad_valorem_taxes_items: class_name = item.get_attribute("class") if class_name == 'district-group': # 遇到新分组时,将上一个分组存入结果列表 if group: groups.append(group) group = {} group_name = item.find_element_by_xpath('.//tr/th').text group["group_name"] = group_name group["items"] = [] elif class_name == 'taxing-authority': name = item.find_element_by_xpath(".//tr/th[@class='name']").text try: millage = float(item.find_element_by_xpath(".//tr/td[@class='millage']").text) except ValueError: # 税率解析失败时置空 millage = None group_item = { "name": name, "millage": millage } group["items"].append(group_item) # 追加最后一个分组数据到结果列表 groups.append(group) return {"ad_valorem_taxes": groups}
内容的提问来源于stack exchange,提问作者akushyn
相关产品推荐
相关产品推荐

