def get_agent_by_html(html): # print tostring(html) try: name = html.cssselect('a')[0].get('title').encode( 'ascii', 'ignore').decode('ascii') agent_url = html.cssselect('a')[0].get('href') estate_name = html.cssselect('a') estate_name = estate_name[len(estate_name) - 1].get('title') try: reg_number = re.search( re.escape(r'CEA Registration Number :') + '\s(.{8})', tostring(html), re.I).group(1) except AttributeError: reg_number = None try: lic_number = re.search( re.escape(r'Agency Licence Number :') + '\s(.{9})', tostring(html), re.I).group(1) except AttributeError: lic_number = None phone_number = html.cssselect('span a') if phone_number: phone_number = get_phone_number(phone_number[0]) agent = AgentIProperty(name=name, phone_number=phone_number, estate_name=estate_name, reg_number=reg_number, lic_number=lic_number, url=agent_url) # print agent return agent except IndexError: return None
def all_genres_xml(): genres = session.query(Genre).all() genres_elements = [i.serializeXML for i in genres] root = et.Element('genres') for genre in genres_elements: root.append(genre) return app.response_class(et.tostring(root), mimetype='application/xml')
def genre_games_xml(genre_name): genre = session.query(Genre).filter_by(name=genre_name).one() games = session.query(Game).filter_by(genre_id=genre.id).all() games_elements = [i.serializeXML for i in games] root = et.Element('games') for game in games_elements: root.append(game) return app.response_class(et.tostring(root), mimetype='application/xml')
def get_agent_by_url(url): logger.info("get agent by url, url = %s" % url) try: source_code = get_page(url) tree = html.fromstring(source_code.text) # Get detail information about the agent summary1 = tostring(tree.cssselect('div.summary1')[0]) summary2 = tostring(tree.cssselect('div.summary2')[0]) name = html.fromstring(summary1).cssselect('h1.summarytitle a')[0].text.encode('ascii', 'ignore').decode('ascii').strip() try: estate_name = html.fromstring(summary1).cssselect('div.summary1 span.greytext')[0].text.strip() except IndexError: estate_name = None phone_number = html.fromstring(summary2).cssselect('span.orangebold')[0].text.strip() cea = html.fromstring(summary2).cssselect('div.top15 a') try: lic_number = cea[0].text.strip() except IndexError: lic_number = None try: reg_number = cea[1].text.strip() except IndexError: reg_number = None agent = Agent(name=name, estate_name=estate_name, phone_number=phone_number, lic_number=lic_number, reg_number=reg_number) logger.info(agent) return agent except requests.exceptions.HTTPError as e: logger.error("HTTPError: " + str(e)) return None except requests.exceptions.ConnectionError as e: logger.error(str(e)) return None except IndexError as e: logger.error(str(e)) with open("error_page.html", "w") as f: f.write(source_code.text.encode('utf-8')) return None except AttributeError as e: logger.error(str(e)) return None
def create_xml(cal_list = None): xml_root = None try: xml_root = ET.Element('planner') if cal_list is not None: for cal in cal_list: xml_calname = set_calname(cal.calendar_title, xml_root) for event in cal.eventlist: xml_event = ET.SubElement(xml_calname, 'event') xml_event.set('title', event.event_title) xml_event.set('description', event.event_description) xml_event.set('startdatetime', str(event.event_start_datetime)) xml_event.set('enddatetime', str(event.event_end_datetime)) doc=tostring(xml_root) write_xml(doc) except: print("Error writing file!")
def create_xml(cal_list=None): xml_root = None try: xml_root = ET.Element('planner') if cal_list is not None: for cal in cal_list: xml_calname = set_calname(cal.calendar_title, xml_root) for event in cal.eventlist: xml_event = ET.SubElement(xml_calname, 'event') xml_event.set('title', event.event_title) xml_event.set('description', event.event_description) xml_event.set('startdatetime', str(event.event_start_datetime)) xml_event.set('enddatetime', str(event.event_end_datetime)) doc = tostring(xml_root) write_xml(doc) except: print("Error writing file!")
# for fake_controllers.yaml controller_list.append( {'name': 'fake_' + cur_robot_name + '_controller', 'joints': [cur_robot_name + "_base_joint"]}) fake_all_controller['joints'].append(cur_robot_name + "_base_joint") # for .srdf cur_group = _elementtree.SubElement(root, 'group', {'name': cur_robot_name}) cur_link = _elementtree.SubElement(cur_group, 'link', {'name': cur_robot_name}) cur_joint = _elementtree.SubElement(cur_group, 'joint', {'name': cur_robot_name + "_base_joint"}) cur_group = _elementtree.SubElement(group_all, 'group', {'name': cur_robot_name}) # for ompl_planning.yaml ompl_planning[cur_robot_name] = copy.deepcopy(ompl_planning_robot) # for .srdf s = _elementtree.tostring(root, encoding="us-ascii", method="xml") s = minidom.parseString(s) s = s.toprettyxml(indent=" ") with open(os.path.abspath(args.out_pkg)+"/config/duckiebot.srdf", 'w') as out_file: out_file.write(s) # for ompl_planning.yaml ompl_planning['all'] = copy.deepcopy(ompl_planning_robot) with open(os.path.abspath(args.out_pkg)+"/config/ompl_planning.yaml", 'w') as out_file: out_file.write(yaml.dump(ompl_planning, default_flow_style=False)) args.urdf_out.write(robots.to_xml_string()) with open(os.path.abspath(args.out_pkg)+"/config/fake_controllers.yaml", 'w') as out_file: out_file.write(yaml.dump({'controller_list': controller_list}, default_flow_style=False))
def get_phone_number(html): pattern = r"65(\d*)" if not pattern: return None else: return re.search(pattern, tostring(html), re.I).group(1)